std 向量中数据类型的初始化

initialization of data types in a std vector

好的,我目前正在使用 std 向量构建一个矩阵,该矩阵上有一个细胞或细菌。因为这个我做了一个"dead" class 来做细胞和细菌的母亲。所以在矩阵中,一个没有它们的情况就是死的。

但是当我尝试构建矩阵时,通过类似的东西:world[x][y] = new cell()/world[x][y] = new bacterie();它不会编译。

所以我的问题是,我该如何初始化它?

这是我的代码,抱歉是西班牙语。

matrizB[fila-1][columna-1] =  new BacteriaM();

matrizB 是一个

vector<vector <dead>> matrizB(n); 

而 BacteriaM 是一个 class 继承自死者; n 由用户定义。 (抱歉语法和编程不好,我是编程新手)

为了使用多态性,您的矩阵元素必须是指针

vector<vector <dead*>> matrizB(n);

您必须小心管理元素的内存。智能指针可能值得一看(std::shared_ptrstd::unique_ptr——以更正确者为准)。

希望对您有所帮助。

您遇到的主要问题是 new 运算符。我假设您在创建对象时不习惯使用 C++new operator for C++ 并不是简单地创建一个对象,而是一个指向对象的指针。因此,您可以转到 matrix[x][y] = cell() 或更改为 vector< vector < dead* > > 并按照@Duthomhas 所说的选择智能指针。这样您就可以更好地管理内存,尤其是在处理向量的向量时。

Note: Watch out for cell() constructors! C++ 会感到困惑并认为您正在声明一个函数...