我希望该类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**'
使用std::vector并std::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注意删除分配的内存,所以不必担心这一点;)