在模板化类中分配数组

时间:2015-07-02 02:42:30

标签: c++ arrays memory-management

我正在使用的模板是

template<typename T, size_type MAX_DIM = 500>

我想弄清楚如何正确分配。 变量T ** array_在构造函数中声明。 这就是我现在所拥有的,但我尝试了几种不同的语法无济于事。

array_=new value_type*[dim1_];
    for ( long i = 0u; i < dim1_; i++)
        array_[i] = new value_type[dim2_];

1 个答案:

答案 0 :(得分:1)

当模板参数为value_type时,我不明白为什么使用T只是使用它:

template<typename T, size_t MAX_SIZE = 500>
class MyArray
{
    T** array_;
public:
    MyArray(size_t dim1_, size_t dim2)
    {
        array_ = new T*[dim1_];
        for (size_t i = 0; i < dim2; ++i)
          array_[i] = new T[dim2];
    }
};

请注意,由于您未使用std::vectorstd::array,因此需要在析构函数中通过delete []手动释放内存。