C/C++语法报错集合汇总
小于 1 分钟
本文主要汇总C/C++语法报错问题
在C++类中vector声明,报错 “expected parameter declarator”
class A{
private:
vector<int> nums(5);
};这里的问题是类内成员声明的初始化语法:从 C++11 起,非静态数据成员的默认成员初始化可以使用等号或花括号,不能直接使用圆括号。编译器会尝试把圆括号里的内容按函数参数声明解析,但数字 5 不是合法的参数声明,所以报错。
若要初始化一个包含 5 个元素的 vector,可以在类内写 vector<int> nums = vector<int>(5);。不要直接改成 vector<int> nums{5};:后者会调用接受初始化列表的构造函数,得到一个只含元素 5 的 vector。
语法和构造函数规则可参见 C++17 公开草案 N4659 的 [class.mem]、[dcl.init.list] 和 [vector.cons]。