如何在构造函数中为 2D 数组分配动态内存,同时保持我std::unique_ptr
处理它的释放?还是有更好的方法来做到这一点?
我的错误是“高度不是一个常数表达式”。
#include <iostream>
#include <vector>
#include <memory>
template<typename T>
class Matrix
{
private:
int Width, Height;
std::unique_ptr<T*> Elements;
public:
Matrix(int Width, int Height);
T* operator[](int Index);
const T* operator[](int Index) const;
};
template<typename T>
Matrix<T>::Matrix(int Width, int Height) : Width(Width), Height(Height), Elements(new T[Width][Height]) {}
template<typename T>
T* Matrix<T>::operator[](int Index) {return Elements[Index];}
int main()
{
Matrix<int> M(4, 4);
std::cout << M[2][2];
}