矢量声明"expected parameter declarator"
Vector declaration "expected parameter declarator"
在类的私有成员变量中有一行代码:
vector<double> dQdt(3)
在xcode中编译时,会给出一个错误"expected parameter declarator "。我想我已经提供了足够的信息。我看不出这份声明有什么不妥。
你必须在构造函数的初始化列表中初始化变量:
class X
{
private:
vector<double> dQdt;
public:
X() : dQdt(3) {}
};
如果你读这个成员初始化引用,你会知道默认的成员初始化必须是大括号或等号初始化。也就是说,你需要使用大括号:
std::vector<double> dQdt{ 0.0, 0.0, 0.0 };
或使用相等字符:
std::vector<double> dQdt = std::vector<double>(3);
由于这是在c++ 11标准中引入的,所以您需要在您的环境中启用它。
我得到了这个错误,而试图编译我的c++代码有一个初始化的向量。在初始化部分将()改为{}为我工作;之前我的代码是这样的:
vector<vector<int>> minA(11, vector<int>(11, INT_MAX));
我修改了代码,用大括号代替了圆括号,错误消失了。
vector<vector<int>> minA{11, vector<int>(11, INT_MAX)};
数据成员的构造函数的形参应该写在类的构造函数的初始化列表中。也就是说,不用
class Foo {
vector<double> dQdt(3);
};
你应该写
class Foo {
public:
Foo() : dQdt(3) {}
private:
vector<double> dQdt;
};
除了在构造函数的初始化列表中进行初始化外,还可以使用大括号初始化列表进行初始化:
class Foo {
vector<double> dQdt{3};
};
错误的实际文本是因为编译器期望您声明一个函数,接受某种类型的参数,并返回vector<double>
。3
不是函数参数的有效声明。
这个问题已经回答了,但是下面的方法也可以。
(在赋初始值时可能更有用。比如24乘以42。)
const int default_value = 42;
struct foo
{
vector<double> hour{vector<double>(24,default_value)};
};
相关文章:
- 修复"-Wunused-parameter"取决于预处理器条件的警告
- C++模板错误:"invalid explicitly-specified argument for template parameter"
- 为什么"types may not be defined in parameter types"
- 如何理解"abstract-declarator containing an ellipsis shall only be used in a parameter-declaration"
- NDK 构建中的异常"error: expected ';' after top level declarator"
- 为什么这段代码抱怨"a non-type template parameter cannot have type"?
- 如何抛出"template parameter"类型的异常?
- 如何在开关语句中使用 cin "as a parameter"
- 派生类中函数参数变化的虚函数按常量类型在"function parameter"会破坏虚拟机制吗?
- 在 lambda(parameter) 中为 std::transform with std::sregex_token
- 如何修复此"argument of type incompatible with parameter"错误?
- 谷歌模拟 - 怎么说"function must be called ONCE with a certain parameter but ok to be called many times with
- CUDA 内核"Only a single pack parameter is allowed"解决方法?
- "Cannot convert parameter 1 from double to float"虽然没有更改参数
- rvalue for a std::string parameter
- 在 MSVC 上,为什么没有出现 std::string 的警告"unreferenced formal parameter"?
- result_of, make_tuple, parameter pack
- "useinbandfec is a unidirectional receive-only parameter"作品中是什么意思?
- 重新定义类<template-parameter-1-2>的默认参数
- 矢量声明"expected parameter declarator"