C :为指针成员分配值
C++: Assigning values to pointer members
我有以下代码:
template<class T>
class RandomTreeNode {
private:
RandomTreeNode<T> *left;
RandomTreeNode<T> *right;
public:
RandomTreeNode(): left(0), right(0) {}
void create_left_child(){ left = &RandomTreeNode<T>();}
void create_right_child(){ right = &RandomTreeNode<T>();}
但这给了我一个编译错误,因为我指着临时变量的地址。我不希望创建新的RandomTreeNode在功能结束时被破坏,我该如何实现?
使用:
void create_left_child()
{
left = new RandomTreeNode<T>();
}
void create_right_child()
{
right = new RandomTreeNode<T>();
}
记住,您必须在不再需要它们时删除它们(可能是在整个树被破坏或该特定节点被删除时)。
这是我的做法:
template<class T>
class RandomTreeNode {
std::unique_ptr<RandomTreeNode<T> > left;
std::unique_ptr<RandomTreeNode<T> > right;
RandomTreeNode(): left(0), right(0) {}
void create_left_child(){ left.reset(new RandomTreeNode<T>());}
void create_right_child(){ right.reset(new RandomTreeNode<T>());}
}
不需要破坏者,也不需要手动内存管理。
相关文章:
- 如果C++类在类方法中具有动态分配,但没有构造函数/析构函数或任何非静态成员,那么它仍然是POD类型吗
- 我有一个对象,它将在整个程序的持续时间内实例化,但一个类成员不会,我应该动态分配它吗?
- 在对象指针上调用 Delete 是否会递归删除其动态分配的成员
- C++类成员:堆栈与堆分配
- 为什么在分配给成员变量之前获取unique_ptr的返回是一个问题?
- (为什么)我们可以在初始化中将非静态类成员分配给静态变量吗?
- 在成员初始值设定项列表中分配unique_ptr
- 对象分配-成员函数的使用无效错误
- 如何确定对象是否已分配成员
- 我可以分配成员访问操作员的返回值吗?
- lambda表达式分配成员函数指针
- 如何在C++中从命令行参数分配成员变量
- 为什么分配成员会引发 NullReferenceException
- 错误:在只读对象中分配成员
- 在只读对象中分配成员 '
- 分配成员变量时出现分段错误
- 具有动态分配成员的结构体的向量
- 按值分配成员对象:我的假设是否正确
- 创建std::shared_ptr来分配成员变量时内存泄漏
- 处理包含动态分配成员的对象向量