C++类中初始化报错——expected parameter declarator

在c++类中,想要如下定义并初始化一个vector,但是会报错提示error: expected parameter declarator

class Trie {
private:
    vector> next(2000, vector(26, 0));
    vector exist(2000);
};

错误原因是:编译器无法区分该语句是成员变量声明还是成员函数声明。简而言之就是因为这种初始化方式看起来像是一个函数。
解决办法是:消除歧义。
可以通过以下方式解决

赋值初始化

class Trie {
private:
    vector> next = vector>(2000, vector(26, 0));
    vector exist = vector(2000);
};

通过构造函数初始化

class Trie {
private:
    vector> next;
    vector exist;
    
public:
    /** Initialize your data structure here. */
    Trie() {
        next = vector>(2000, vector(26, 0));
        exist = vector(2000);
    }
};
//或者
class Trie {
private:
    vector> next;
    vector exist;
    
public:
    /** Initialize your data structure here. */
    Trie(): next(2000, vector(26, 0)), exist(2000){
    }
};

利用 {} 初始化

你可能感兴趣的:(C++类中初始化报错——expected parameter declarator)