美文网首页
C++类中初始化报错——expected parameter d

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

作者: random_walk | 来源:发表于2021-08-27 14:15 被阅读0次

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

利用 {} 初始化

相关文章

网友评论

      本文标题:C++类中初始化报错——expected parameter d

      本文链接:https://www.haomeiwen.com/subject/rismiltx.html