从成员变量指针返回bool

时间:2014-11-19 16:25:50

标签: c++

所以我正在使用这个看起来像这样的代码:

class SomeClass : public SomeBaseClass {
    SomePointerToClass * p;
  public:
    SomeClass(SomePointerToClass* p = NULL) : p(p) {};
    void start(SomePointerToClass* sp) {
        p = sp;
    }
    bool hasStarted() {
        return p;
    }
}

我简化了一些东西,以便我可以制作一个简短的代码示例,但我认为从成员变量指针返回一个bool是一个代码。我应该改变它还是某种形式的C ++约定?

2 个答案:

答案 0 :(得分:3)

hasStarted()很好:在C ++中,指针将在零/非零的基础上自动转换为bool

有些人更喜欢写return (p != nullptr)return static_cast<bool>(p),以便明确表达意图,但在这种情况下,我并不十分挑剔。

但是,行为是在C中实现定义的,所以在那里依赖它!

答案 1 :(得分:0)

bool hasStarted () { return (bool) p; }

这清楚地表明&#34;我打算这样做,&#34;我说,这是一件非常合理的事情。

我有时会在有权访问指针p的函数中执行此操作:

if (p) ... //meaning:  if p isn't NULL...

但共识是我不应该提及返回一个指针 - 我确信这里的共识是正确的。如此编辑。