在c++中,如果我们在类里初始化vector会报expected parameter declarator的错误。
本讨论涉及面向对象的一些知识, 但是涉及不深,请谨慎观看😀
是因为编译器区分不了它是成员变量还是成员方法
class Solution {
vector<int> res;
public:
};上面的定义是可以正常使用的,而
class Solution {
vector<int> res(10);
//或vector<int> res(10, 0);
public:
};编译器会无法区分你定义的是成员变量还是成员方法,这里我们可以看成员方法是怎么定义的
class Solution {
public:
void dfs() {}
};通过上面的代码示例,我们可以看出虽然res(10)看起来像是对成员变量res的初始化,但如果你在构造函数或者成员函数中有类似名称的局部变量,编译器会认为你在声明一个局部变量或函数,而不是初始化成员变量。
所以,在下次定义成员变量时,必须注意成员变量的初始化语法于函数声明的区分
class Solution {
vector<int> res = vector<int>(10);
public:
void Method() {
res.push_back(1);
}
};class Solution {
vector<int> res; //成员变量
public:
Solution() : res(10) {} //在构造函数中初始化成员变量
};上面内容为自创,如有错误还请读者指出😀