矢量声明“预期参数声明符”

时间:2016-09-18 16:54:29

标签: c++ vector

我在类的私有成员变量中有一行代码:

vector<double> dQdt(3)

在xcode中编译时,会出现“预期参数声明符”错误。我想我提供了足够的信息。我没有看到这个声明有什么问题。

6 个答案:

答案 0 :(得分:8)

您必须在构造函数的初始化列表中初始化变量:

class X 
{
    private:
     vector<double> dQdt;
    public:
     X() : dQdt(3) {}
};

答案 1 :(得分:4)

如果您阅读例如this member initialization reference您将了解默认成员初始化必须是大括号或等于初始化程序。即你需要使用大括号:

def func(s1, s2):
    if len(s1) != len(s2):
        raise ValueError("Strings must be the same length")
    total = 0
    for ind, ele in enumerate(s1):
        total += int(ele) * int(s2[ind])
    return total

或使用等号:

vector<double> dQdt{3};

由于这是随C ++ 11标准引入的,因此您需要在您的环境中启用它。

答案 2 :(得分:2)

数据成员构造函数的参数应写在您的类的初始化列表中。构造函数。也就是说,而不是

class Foo {
    vector<double> dQdt(3);
};

你应该写

class Foo {
public:
    Foo() : dQdt(3) {}
private:
    vector<double> dQdt;
};

答案 3 :(得分:2)

除了在构造函数的初始化列表中初始化之外,还可以使用大括号初始化列表进行初始化:

class Foo {
    vector<double> dQdt{3};
};

错误的实际文本是因为编译器期望您声明一个函数,接受某种类型的参数,然后返回vector<double>3不是函数参数的有效声明。

答案 4 :(得分:1)

我在尝试编译具有初始化向量的 C++ 代码时遇到此错误。 在初始化部分将 () 更改为 {} 对我有用; 早些时候我的代码是这样的:

    vector<vector<int>> minA(11, vector<int>(11, INT_MAX));

我更改了代码,用花括号替换了圆括号,错误消失了。

    vector<vector<int>> minA{11, vector<int>(11, INT_MAX)};

答案 5 :(得分:0)

以下问题已经得到解答,但也可以使用。
),这对于分配初始值可能更有用。例如,是42的24倍。

const int default_value = 42;

struct foo
{
    vector<double> hour{vector<double>(24,default_value)};
};