类对象的新数组指针

use*_*034 0 c++ arrays class

我希望该类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;
    }
};
Run Code Online (Sandbox Code Playgroud)

编译说:

在赋值中不能将'int**'转换为'OUT :: IN**'

Gar*_*365 5

使用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
};
Run Code Online (Sandbox Code Playgroud)

并使用它:

OUT out;
out.add(std::make_unique<OUT::IN>());
Run Code Online (Sandbox Code Playgroud)

来自http://www.cplusplus.com/reference/vector/vector/:

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

还要std::unique_ptr注意删除分配的内存,所以不必担心这一点;)