如何测试是否已分配父指针
How to test if a parent pointer has been allocated?
>我有一个reset()
函数,它遍历一堆数据并重置它。 其中之一是指向自定义类的指针,假设Apple *a
;
Apple
类有一个vector<Seed *>
对象,以及一个resetSeeds()
遍历和重置它们的方法。
如果在分配a
之前调用reset()
,我不希望resetSeeds
遍历其Seed
对象,因为这些对象尚未分配。 我该怎么做?
将a
设置为 NULL。然后,在 reset()
中,仅当 a
不为 NULL 时才调用 a->resetSeeds()
:
class Foo
{
private:
Apple* a;
public:
Foo() : a(NULL) { }
void reset()
{
if (a != NULL) {
a->resetSeeds();
}
}
};
如果您使用的是 C++11,请切换NULL
,改为 nullptr
。
初始化
列表中的指针。这样,甚至在调用构造函数之前就设置了它:
class Worm
{
Apple *a;
Worm() : a(0)
{
// a is 0
}
void setApple(Apple *_a)
{
a = _a;
}
void eat(void)
{
if(a)
a->chew();
}
}
将a
设置为在其声明处NULL
,如果是实例字段,则在相关构造函数中,并在使用它之前检查NULL
。
我想说的是,保留任何可访问的无效指针NULL
,并在使用之前检查任何指针是否有NULL
,这是一种很好的做法。
相关文章:
- 通过双指针分配指针
- 在不工作的情况下为数组分配指针,但反过来也可以
- 无法使用"std::make_shared"分配指针
- 分配指针时出现分段错误
- 为什么有时仅使用Ampersand运算符在C 中分配指针
- 重新分配指针阵列的一部分的安全方法
- 为什么在执行增量操作之前分配指针值
- 当指针指向的对象被另一个类的实例删除时,重新分配指针
- 在堆上分配指针的原因是什么?
- 有没有办法防止分配指针?
- 将运算符重写应用于具有动态分配指针的类
- 在堆上分配指针数组
- 在另一个结构中的结构内解除分配指针
- 分配指针后,是否可以为指针指向的事物分配变量名称?
- 重新分配指针后,将类功能与指针一起使用
- 为什么我的新分配指针会自动在程序退出上删除
- 分配指针的方法之间有什么区别?
- 如何声明和分配指针
- 内存分配(指针和堆栈)
- 通过参数分配指针的值