指向类对象的新指针数组

New array of pointers to class objects

本文关键字:指针 数组 新指针 对象      更新时间:2023-10-16

我希望类OUT包含一组IN指针。有多少是未知的。这就是我目前所拥有的。

class OUT{
    class IN{/**/};
    IN** IN_handle;
    int m_size_in;
    OUT(int size_in):m_size_in(size_in){
        IN_handle = new *IN[size_in];
    }
    ~OUT(){
        for(int i=0; i<m_size_in; i++){
            delete IN_handle[i];
        }
        delete IN_handle;
    }
};

编译器 说:

无法在赋值中将"int**"转换为"OUT::IN**"

使用 std::vectorstd::unique_ptr 将为您节省大量工作:

#include <vector>
#include <memory>
class OUT{
    public:
        class IN{/**/};
        std::vector<std::unique_ptr<IN>> IN_handle;
        void add(std::unique_ptr<IN> &&new_data)
        {
            IN_handle.push_back(std::move(new_data));
        }
        OUT()
        {
        }
        ~OUT()
        {
        }
        // Functions to manipulate IN_handle
};

并使用它:

OUT out;
out.add(std::make_unique<OUT::IN>());

从 http://www.cplusplus.com/reference/vector/vector/:

向量是表示大小可以更改的数组的序列容器。

此外,std::unique_ptr负责删除分配的内存,因此无需担心这一点;)

使用std::vectorstd::unique_ptr的组合作为矢量元素。不要手动管理指针或动态数组。