1. ホーム
  2. c++

[解決済み】C++コンパイルタイムエラー:数値定数の前に期待される識別子

2022-01-19 17:19:36

質問

他の同じような投稿を読みましたが、何が間違っていたのか理解できません。私のベクターの宣言は正しいと思います。私はサイズなしで宣言しようとしましたが、それでもうまくいきません。 私のコードは次のとおりです。

#include <vector> 
#include <string>
#include <sstream>
#include <fstream>
#include <cmath>

using namespace std;

vector<string> v2(5, "null");
vector< vector<string> > v2d2(20,v2);

class Attribute //attribute and entropy calculation
{
    vector<string> name(5); //error in these 2 lines
    vector<int> val(5,0);
    public:
    Attribute(){}

int total,T,F;

};  

int main()
{  
Attribute attributes;
return 0;
}

解決するには?

できません。

vector<string> name(5); //error in these 2 lines
vector<int> val(5,0);

メソッド以外のクラスで

宣言の時点でデータメンバを初期化することはできますが、その際に () 括弧で囲みます。

class Foo {
    vector<string> name = vector<string>(5);
    vector<int> val{vector<int>(5,0)};
};

C++11以前は、最初に宣言し、その後、例えば、コンストラクタで初期化する必要があります。

class Foo {
    vector<string> name;
    vector<int> val;
 public:
  Foo() : name(5), val(5,0) {}
};