c++ convert class to boolean

前端 未结 5 1342
既然无缘
既然无缘 2020-12-14 16:12

With all of the fundamental types of C++, one can simply query:

if(varname)

and the type is converted to a boolean for evaluation. Is there

5条回答
  •  时光取名叫无心
    2020-12-14 16:49

    You can define a user-defined conversion operator. This must be a member function, e.g.:

    class MyClass {
      operator int() const
      { return your_number; }
      // other fields
    };
    

    You can also implement operator bool. However, I would STRONGLY suggest against doing it because your class will become usable in arithmetic expressions which can quickly lead to a mess. IOStreams define, for example, conversion to void*. You can test void* in the same way you can test a bool, but there are no language-defined implicit conversions from void*. Another alternative is to define operator! with the desired semantics.

    In short: defining conversion operator sto integer types (including booleans) is a REALLY bad idea.

提交回复
热议问题