可以为一个类重载not运算符:
class TestA
{
public:
bool Test;
const bool operator!(){return !Test;}
};
那样......
TestA A; A.Test = false;
if(!TestA){ //etc }
......可以工作。但是,以下工作如何?
if(TestA) //Does this have to be overloaded too, or is it the not operator inverted?
我会补充一点,阅读之后,我对使用的typedef解决方案感到有些困惑,而且我并不完全了解正在发生的事情,因为它看起来有点不明智。有人可以将它分解成一种可以理解的格式吗?
答案 0 :(得分:4)
你可以写一个operator bool()
。这样就可以将胁迫归咎于bool,使你的声明成为可能。
答案 1 :(得分:2)
你重载operator void*
(就像标准库的iostreams一样)或者使用boost的技巧来使用“unspecified_bool_type”typedef
(安全bool)。它不会自动反转您的operator!