如何测试是否已分配父指针

How to test if a parent pointer has been allocated?

本文关键字:分配 指针 是否 何测试 测试      更新时间:2023-10-16

>我有一个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,这是一种很好的做法。