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

时间:2015-11-08 01:23:12

标签: c++ c++11 vector initialization syntax-error

好的我现在正在使用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由用户定义。 (对不起语法和编程很糟糕,我是编程的新手)

2 个答案:

答案 0 :(得分:1)

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

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

您必须小心管理元素的内存。可能值得查看智能指针(std::shared_ptrstd::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 ++ 会感到困惑,并认为你正在声明一个函数......