所以我正在使用这个看起来像这样的代码:
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 ++约定?
答案 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...
但共识是我不应该提及返回一个指针 - 我确信这里的共识是正确的。如此编辑。