error: expected parameter declarator报错的解决办法
错误示例
代码如下(示例):
class VoiceLocalPlan {
public:
cv::Vec3b point_color_1(0, 0, 255);
cv::Vec3b point_color_2(0, 0, 0);
cv::Vec3b point_color(255, 0, 255);
};
报错解释:编译器无法区分该语句是成员变量声明还是成员函数声明
正确示例
class VoiceLocalPlan {
public:
cv::Vec3b point_color_1 = cv::Vec3b(0, 0, 255);//红色
cv::Vec3b point_color_2 = cv::Vec3b(0, 255, 255);//黄色
cv::Vec3b point_color = cv::Vec3b(255, 0, 255);//紫色
};
vector使用类似
错误示例
class A{
private:
vector<int> aux(5); //意欲申请长度为5的vector
};
正确示例
//利用构造函数列表初始化
class A{
private:
vector<int> aux;
public:
A():aux(5){} //利用列表初始化,将aux初始化为长度为5
};
//利用 {} 初始化,{} 初始化也被称为通用初始化,这种语法可以用在任何地方,具有一致的语义。
class A{
private:
vector<int> aux{0,0,0,0,0};
};
//利用vector的赋值构造函数
class A{
private:
vector<int> aux = vector<int> (5, 0);
};
总结
使用C++类初始化参数的时候需要注意