在c++类中,想要如下定义并初始化一个vector,但是会报错提示error: expected parameter declarator
。
class Trie {
private:
vector<vector<int>> next(2000, vector<int>(26, 0));
vector<bool> exist(2000);
};
错误原因是:编译器无法区分该语句是成员变量声明还是成员函数声明。简而言之就是因为这种初始化方式看起来像是一个函数。
解决办法是:消除歧义。
可以通过以下方式解决
赋值初始化
class Trie {
private:
vector<vector<int>> next = vector<vector<int>>(2000, vector<int>(26, 0));
vector<bool> exist = vector<bool>(2000);
};
通过构造函数初始化
class Trie {
private:
vector<vector<int>> next;
vector<bool> exist;
public:
/** Initialize your data structure here. */
Trie() {
next = vector<vector<int>>(2000, vector<int>(26, 0));
exist = vector<bool>(2000);
}
};
//或者
class Trie {
private:
vector<vector<int>> next;
vector<bool> exist;
public:
/** Initialize your data structure here. */
Trie(): next(2000, vector<int>(26, 0)), exist(2000){
}
};