トップページ > プログラム > 2014年10月16日 > NghbfOwW

書き込み順位&時間帯一覧

15 位/153 ID中時間01234567891011121314151617181920212223Total
書き込み数0000000000000000101000013



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん
C++相談室 part114

書き込みレス一覧

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
解説ありがとうございました。理解できました。
とりあえず初期化もヘッダーの中に書きたいので、
私が最初に書いた方法でやってみます。ちょっとヘンテコな方法かも
しれませんが。


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。