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

在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){
    }
};

利用 {} 初始化

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容