我在类的私有成员变量中有一行代码:
vector<double> dQdt(3)
Run Code Online (Sandbox Code Playgroud)
在xcode中编译时,会出现"预期参数声明符"错误.我想我提供了足够的信息.我没有看到这个声明有什么问题.
Abh*_*602 12
我在尝试编译具有初始化向量的 C++ 代码时遇到此错误。 将 () 更改为 {} 在初始化部分对我有用; 早些时候我的代码看起来像这样:
vector<vector<int>> minA(11, vector<int>(11, INT_MAX));
Run Code Online (Sandbox Code Playgroud)
我更改了代码,用大括号替换圆括号,错误就消失了。
vector<vector<int>> minA{11, vector<int>(11, INT_MAX)};
Run Code Online (Sandbox Code Playgroud)
您必须在构造函数的初始化列表中初始化变量:
class X
{
private:
vector<double> dQdt;
public:
X() : dQdt(3) {}
};
Run Code Online (Sandbox Code Playgroud)
数据成员构造函数的参数应该写在你的类构造函数的初始化列表中。也就是说,而不是
class Foo {
vector<double> dQdt(3);
};
Run Code Online (Sandbox Code Playgroud)
你应该写
class Foo {
public:
Foo() : dQdt(3) {}
private:
vector<double> dQdt;
};
Run Code Online (Sandbox Code Playgroud)
如果您阅读例如该成员初始化参考,您将了解默认成员初始化必须是大括号或等于初始化程序。也就是说,您需要使用大括号:
vector<double> dQdt{3};
Run Code Online (Sandbox Code Playgroud)
或使用等于字符:
vector<double> dQdt = std::vector(3);
Run Code Online (Sandbox Code Playgroud)
由于这是C ++ 11标准引入的,因此您需要在您的环境中启用它。
除了在构造函数的初始值设定项列表中初始化之外,您还可以使用大括号初始值设定项列表进行初始化:
class Foo {
vector<double> dQdt{3};
};
Run Code Online (Sandbox Code Playgroud)
错误的实际文本是因为编译器期望您声明一个函数,采用某种类型的参数,并返回vector<double>. 3不是函数参数的有效声明。
| 归档时间: |
|
| 查看次数: |
13255 次 |
| 最近记录: |