我如何在 class 的构造函数中初始化对象的二维向量? (C++)
How would I initialise a 2D vector of objects in a constructor of a class? (C++)
我目前正在尝试创建一个包含 2D 结构向量的 class,但是我显然在做一些可悲的错误,因为每当我 运行 我的代码时,我都会在第 19 行收到错误(世界构造函数中 for 循环中的行)error: expected primary-expression before ‘)’ token
这是我目前的代码:
#include <iostream>
#include <vector>
struct Cell{
bool isAlive;
Cell(bool alive){
isAlive = alive;
}
};
class World{
unsigned width;
unsigned height;
std::vector<std::vector<Cell>> state;
public:
World(unsigned w,unsigned h){
width = w;
height = h;
for (int i = 0; i<h; i++){
state.push_back(std::vector<Cell>);
}
}
};
我知道我还没有完全初始化向量的第二个维度,但我现在只是想让它工作。
非常感谢,老实说,我不知道这个错误是什么意思。
您需要构建您尝试构建的向量 push_back。
// Note the added parentheses after <Cell>
state.push_back(std::vector<Cell>())
在这种情况下,push_back
需要一个值,或者一个计算结果为一个值的“表达式”。您的 expected primary expression before ')' token
错误或多或少意味着 push_back 期望一个值作为其参数,但传递了其他内容。在这种情况下,其他东西是 type std::vector<Cell>
。构造向量(用表达式创建一个值)将解决这个问题。
听说过“没有勺子”吗?在这种情况下,没有矢量。您不能传递类型,在这种情况下您必须传递实例或值。
我目前正在尝试创建一个包含 2D 结构向量的 class,但是我显然在做一些可悲的错误,因为每当我 运行 我的代码时,我都会在第 19 行收到错误(世界构造函数中 for 循环中的行)error: expected primary-expression before ‘)’ token
这是我目前的代码:
#include <iostream>
#include <vector>
struct Cell{
bool isAlive;
Cell(bool alive){
isAlive = alive;
}
};
class World{
unsigned width;
unsigned height;
std::vector<std::vector<Cell>> state;
public:
World(unsigned w,unsigned h){
width = w;
height = h;
for (int i = 0; i<h; i++){
state.push_back(std::vector<Cell>);
}
}
};
我知道我还没有完全初始化向量的第二个维度,但我现在只是想让它工作。
非常感谢,老实说,我不知道这个错误是什么意思。
您需要构建您尝试构建的向量 push_back。
// Note the added parentheses after <Cell>
state.push_back(std::vector<Cell>())
在这种情况下,push_back
需要一个值,或者一个计算结果为一个值的“表达式”。您的 expected primary expression before ')' token
错误或多或少意味着 push_back 期望一个值作为其参数,但传递了其他内容。在这种情况下,其他东西是 type std::vector<Cell>
。构造向量(用表达式创建一个值)将解决这个问题。
听说过“没有勺子”吗?在这种情况下,没有矢量。您不能传递类型,在这种情况下您必须传递实例或值。