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_ptr
或 std::unique_ptr
——以更正确者为准)。
希望对您有所帮助。
您遇到的主要问题是 new
运算符。我假设您在创建对象时不习惯使用 C++。 new
operator for C++ 并不是简单地创建一个对象,而是一个指向对象的指针。因此,您可以转到 matrix[x][y] = cell()
或更改为 vector< vector < dead* > >
并按照@Duthomhas 所说的选择智能指针。这样您就可以更好地管理内存,尤其是在处理向量的向量时。
Note: Watch out for cell()
constructors! C++ 会感到困惑并认为您正在声明一个函数...
好的,我目前正在使用 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_ptr
或 std::unique_ptr
——以更正确者为准)。
希望对您有所帮助。
您遇到的主要问题是 new
运算符。我假设您在创建对象时不习惯使用 C++。 new
operator for C++ 并不是简单地创建一个对象,而是一个指向对象的指针。因此,您可以转到 matrix[x][y] = cell()
或更改为 vector< vector < dead* > >
并按照@Duthomhas 所说的选择智能指针。这样您就可以更好地管理内存,尤其是在处理向量的向量时。
Note: Watch out for cell()
constructors! C++ 会感到困惑并认为您正在声明一个函数...