在模板类中分配数组

Posted

技术标签:

【中文标题】在模板类中分配数组【英文标题】:Allocating an array in a templated class 【发布时间】:2015-07-02 02:42:29 【问题描述】:

我使用的模板是

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】:

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

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 [] 手动释放内存。

【讨论】:

循环中的错字,应该是i &lt; dim1_

以上是关于在模板类中分配数组的主要内容,如果未能解决你的问题,请参考以下文章

如何在 smarty 模板文件中分配数组?

在另一个类中分配对象数组(C++)

Django:在模板中分配变量

在 JME 中拆分文本并在数组中分配值

如何在 C++ 中分配类内数组的可修改大小

iOS Instrumentation:如何解释内存分配模板?