gpt4 book ai didi

c++ - 为什么同样的语句对 C++ 中的类成员不起作用?

转载 作者:行者123 更新时间:2023-12-02 02:26:28 25 4
gpt4 key购买 nike

我对 C++ 很陌生,下面是我的程序。它定义了一个嵌套 vector 。

#include <vector>

using namespace std;

int main(int argc, char *argv[]) {
vector<vector<int>> grid(10, vector<int>(10, 10000));
return 0;
}

当我定义相同的 vector 作为类成员时,它报告语法错误:

#include <vector>

using namespace std;

class Test {
public:
vector<vector<int>> grid(10, vector<int>(10, 10000));
};

int main(int argc, char *argv[]) {
vector<vector<int>> grid(10, vector<int>(10, 10000));
return 0;
}

如何定义 vector<vector<int>> 类型的类成员并用 10 vector<int>(10, 10000) 初始化它?我尝试声明变量并在构造函数中初始化它,但编译器报告 C:\my_projects\cpp1\main.cpp(8): error C2064: term does not evaluate to a function taking 2 arguments .

#include <vector>

using namespace std;

class Test {
public:
Test() {
grid(10, vector<int>(10, 10000));
}

public:
vector<vector<int>> grid;
};

int main(int argc, char *argv[]) {
vector<vector<int>> grid(10, vector<int>(10, 10000));
return 0;
}

最佳答案

您可以对 default member initializer 使用花括号初始化器或等号初始化器(C++11 起),不支持括号初始值设定项;正如错误消息所述,它尝试被解释为函数。

例如

class Test {
public:
vector<vector<int>> grid{10, vector<int>(10, 10000)};
};

class Test {
public:
vector<vector<int>> grid = vector<vector<int>>(10, vector<int>(10, 10000));
};

关于c++ - 为什么同样的语句对 C++ 中的类成员不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65576084/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com