我如何在 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>。构造向量(用表达式创建一个值)将解决这个问题。

听说过“没有勺子”吗?在这种情况下,没有矢量。您不能传递类型,在这种情况下您必须传递实例或值。