- C++相談室 part114
302 :デフォルトの名無しさん[]:2014/10/16(木) 16:56:02.61 ID:NghbfOwW - VC++で以下のようにメンバ変数を初期化しようとしたらエラーが出るので
class MyClass{ public: static const char array[] = "abcde"; // IntelliSense: 型 "const char []" のメンバーは in-class initializer を持つことができません }; 関数にして、その中でなら初期化できたので、 class MyClass{ public: static const char *array() { static const char arrayData[] = "abcde"; return arrayData; } }; こんなふうにして void main(){ MyClass mc; char c_data = mc.array()[2]; } みたいに、そのデータを使うのは、変なやり方でしょうか? もっと正統派のお勧めの方法がありましたら教えてください。
|
- C++相談室 part114
305 :デフォルトの名無しさん[]:2014/10/16(木) 18:53:57.13 ID:NghbfOwW - みなさんレスありがとうございました。
>>304 みすません、 >ただし複数の翻訳単位で定義すると多重定義エラーが出るから注意 この部分が良く分らないのですが、もう少し具体的に教えてください。
|
- C++相談室 part114
307 :デフォルトの名無しさん[]:2014/10/16(木) 23:32:55.72 ID:NghbfOwW - >>306
解説ありがとうございました。理解できました。 とりあえず初期化もヘッダーの中に書きたいので、 私が最初に書いた方法でやってみます。ちょっとヘンテコな方法かも しれませんが。
|