[英]Cannot convert ‘int*’ to ‘int**’ in assignment in C++ [closed]
我是C ++的初学者,因此我开始通过编写自己的Vector
类进行一些练习。 它存储数组的行数和列数,并且元素是动态分配的。
template <class T>
class Vector {
private:
unsigned int rows;
unsigned int cols;
T **elements;
public:
Vector(unsigned int, unsigned int);
~Vector();
};
template <class T>
Vector<T>::Vector(unsigned int rows, unsigned int cols) {
this->rows = rows;
this->cols = cols;
this->elements = new T[this->rows];
for (int i = 0; i < this->rows; i++) {
this->elements[i] = new T[this->cols];
}
}
template <class T>
Vector<T>::~Vector() {
};
这是代码。 编译它时(我创建了一个测试对象: Vector<int> test;
),出现错误: "Cannot convert 'int*' to 'int**' in assignment"
。
为什么会出现此错误? 我在以下网站上看到了多维动态分配示例: http : //www.cplusplus.com/forum/beginner/63/
最大的错误是分配指针数组时缺少“ *
”:
this->elements = new T*[this->rows];
除此之外:
作为起点,请使用以下代码:
template <class T>
class Vector {
public:
unsigned int rows;
unsigned int cols;
T** elements;
Vector(unsigned int, unsigned int);
~Vector();
};
template <class T>
Vector<T>::Vector(unsigned int rows, unsigned int cols) {
this->rows = rows;
this->cols = cols;
this->elements = new T*[this->rows];
for (int i = 0; i < this->rows; i++) {
this->elements[i] = new T[this->cols];
}
}
template <class T>
Vector<T>::~Vector() {
for(int i=0; i<this->rows;++i)
delete[] this->elements[i];
delete[] this->elements;
};
int main()
{
Vector<int> obj(2,2);
obj.elements[0][0] = 1;
obj.elements[0][1] = 2;
obj.elements[1][0] = 3;
obj.elements[1][1] = 4;
std::cout << obj.elements[0][0] << " " << obj.elements[0][1] << std::endl;
std::cout << obj.elements[1][0] << " " << obj.elements[1][1] << std::endl;
return 0;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.