C++でベクトルを定義する新しいショートカット方法について質問があります。私はその後、次のクラスにC++ 11関数呼び出しでのベクトルの初期化
struct Tester{
vector< vector<int> > data;
Tester(){
data = vector< vector<int> >();
}
void add(vector<int> datum){
data.push_back(datum);
}
};
があると、予想通り、次の作品:
int main(){
Tester test = Tester();
vector<int> datum = vector<int>{1,2,3};
test.add(datum);
}
が、これはしません:
int main(){
Tester test = Tester();
test.add(vector<int>{1,2,3});
}
は、誰かが私に違いを説明していただけますか?どのように私は2番目のmain()で試みるショートカットを行うことができますか?
C++ 11は、テンプレートの括弧の間にスペースを残さないことができます: 'ベクトル>は'合法です。 –
zneak
また、2回目の試みで得たエラーを投稿する必要があります。私の頭の中で、C++ 11コンパイラが手元になくても、イニシャライザリスト( 'test.add({1,2,3})')か括弧をつけて( ' test.add(ベクトル({1,2,3}))))。 –
zneak
'data = vector < vector>();'は完全に余計なものであり、C++のコンストラクタと初期化において根本的な誤解を指摘するかもしれません。 –
PlasmaHH