好的我现在正在使用std向量构建一个矩阵,这些向量意味着它们上有一个细胞或细菌。因此,我做了一个"死了"上课是细胞和细菌的母亲。所以在矩阵中,没有任何一个的情况就会死亡。
但是当我尝试构建矩阵时,通过类似:world [x] [y] = new cell()/ world [x] [y] = new bacterie();它不会编译。
所以我的问题是,我该如何初始化它?
这是我的代码,对西班牙人抱歉。
matrizB[fila-1][columna-1] = new BacteriaM();
matrizB a a
vector<vector <dead>> matrizB(n);
和BacteriaM是一个继承死亡的类; n由用户定义。 (对不起语法和编程很糟糕,我是编程的新手)
答案 0 :(得分:1)
为了使用多态,你的矩阵元素必须是指针。
vector<vector <dead*>> matrizB(n);
您必须小心管理元素的内存。可能值得查看智能指针(std::shared_ptr
或std::unique_ptr
- 无论哪个更正确。)
希望这有帮助。
答案 1 :(得分:0)
您遇到的主要问题是new
运营商。我假设你在创建对象时不习惯 C ++ 。 new
operator for C++不是简单地创建一个对象,而是一个指向对象的指针。因此,您可以转到matrix[x][y] = cell()
或更改为vector< vector < dead* > >
并按照@Duthomhas所说的选择智能指针。这样你就可以更好地管理内存,特别是当你处理向量向量时。
Note: Watch out for cell()
constructors! C ++ 会感到困惑,并认为你正在声明一个函数......