【发布时间】:2015-02-05 16:51:04
【问题描述】:
假设我有一个可能没有正确初始化的对象,但它不仅仅是一个指向对象的空指针;它是一个具有空或未初始化成员的对象。但我想以一种可读的方式检查它,就好像它是一个指针:
if (Object) use(Object);
例如,Object 可能有一个int 字段,如果该字段为0,则认为该字段未初始化。然后,我可以使 !像这样的运算符:
bool operator!() const {return intField == 0;}
我可以这样使用它:
if (! Object) initialize (Object);
问题是,如果我想测试相反的条件(非空性),我不能这样做:
if (Object)...
我只发现尴尬的可能性:
if (! (! Object))... // awful
if (Object.notNull()) // not so bad
最接近我愿望的是令人困惑:
bool operator()() {return intField != 0;}
if (Object())... // it looks a lot like an argument-less constructor
AFAIK,没有返回 bool 的空运算符(类似于 bool operator() {...})或任何其他技巧或成语可以实现这一点。
除了notNull() 方法之外,还有什么可读的解决方案吗?谢谢。
【问题讨论】:
标签: c++ object null operator-overloading operators