特にC で配列を初期化する方法を読んだ後:
ただし、明らかな解決策を見逃さないでください。
int myArray[10] = { 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 };
私はこのようなことを試しました:
#include <iostream>
class Something {
private:
int myArray[10];
public:
Something() {
myArray[10] = { 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 };
}
int ShowThingy(int what) {
return myArray[what];
}
~Something() {}
};
int main () {
Something Thing;
std::cerr << Thing.ShowThingy(3);
}
そして私は得る:
..\src\Something.cpp: In constructor 'Something::Something()':
..\src\Something.cpp:10:48: error: cannot convert '<brace-enclosed initializer list>' to 'int' in assignment
この場合の明白なことはそれほど明白ではありません。配列の開始もより動的にしたいと本当に思っています。
疲れました:
private:
int * myArray;
public:
Something() {
myArray = new int [10];
myArray = { 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 };
}
これは私にはファンキーに見え、コンパイラにもそうでした:
..\src\Something.cpp: In constructor 'Something::Something()':
..\src\Something.cpp:11:44: error: cannot convert '<brace-enclosed initializer list>' to 'int*' in assignment
これも機能しませんでした:
private:
int myArray[10] = { 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 };
と:
..\src\Something.cpp:6:20: error: a brace-enclosed initializer is not allowed here before '{' token
..\src\Something.cpp:6:51: sorry, unimplemented: non-static data member initializers
..\src\Something.cpp:6:51: error: 'constexpr' needed for in-class initialization of static data member 'myArray' of non-integral type
私は本当にうまくやっていて、何がうまくいかないかを学んでいますが、何がうまくいくかを学ぶのはあまり得意ではありません.
では、クラス内の配列に初期化リスト {value, value, value} を使用するにはどうすればよいでしょうか?
私はしばらくの間これを行う方法を理解しようとしてきましたが、非常に行き詰まっています。アプリ用に作成する必要があるこれらの種類のリストがたくさんあります。