我遇到类似于此处列出的问题pointer-to-a-pointer-to-a-struct-giving-headache 我的问题是不同的,因为我不想要LISTOFONES的多个实例,我想要ONE的指针的多个实例,如
class ONE {
int id;
char *name;
};
class LISTOFONES {
ONE **pointers;
char *name;
LISTOFONES ();
~LISTOFONES ();
};
如何使用
对指针变量进行正确且内存安全的初始化
1-纯c ++ ..不是stl容器
2- 100%动态不[]数组限制
3-完全内存安全(所有指针也安全地指向有效的类)
修改
这不是家庭工作
为了我想要的我只想知道在'指针'变量中正确初始化指针的方法是什么
修改
我正在尝试实现指针指针指向的指针列表(数组)
每个指针指向 ONE 结构
答案 0 :(得分:2)
如果是我,我会分配ONE*
s数组:
pointers = new ONE*[reserve];
我会安排pointers
数组的前几个成员指向有效的ONE对象。最后剩下的成员都将为零(不是必需的,因为它们永远不会被引用。)
当我需要增加数组时,我会用更大的尺寸调用new:
newPointers = new ONE*[newReserve];
我会将之前数组中的所有指针复制到新数组中。
void
LISTOFONES::push_back(const ONE& one) {
if(_size>=_reserve) {
std::size_t newReserve = _reserve?(_reserve*2):1;
ONE** newPointers = new ONE*[newReserve];
std::copy(this->pointers, this->pointers+_size, newPointers);
std::fill(newPointers+_size, newPointers+newReserve, (ONE*)0);
std::swap(this->pointers, newPointers);
_reserve = newReserve;
delete[] newPointers;
}
this->pointers[_size] = new ONE(one);
++_size;
}