提问者:小点点

如何设置C++类的布尔值?


我想知道如何设置类的布尔值。 我在别人的代码中看到过这个,但我不知道自己怎么做。格式是这样的:

class myClass{
   //...
};
myClass getClass(){
  myClass myclass;
  //...
  return myclass;
}

int main(int argc, char **argv){
  myClass myclass;
  myclass = getClass();
  if(myclass){
    //do stuff
  }
  //...
  if(!myclass){
    //do other stuff
  }
  return 0;
}

共2个答案

匿名用户

您需要为您的类提供一个到bool的转换函数,如下所示:

class myClass{
   public:
   explicit operator bool() const { /* ... */ }
};

最好将转换设置为显式,以避免意外转换。 在if语句中使用它很好,因为这被认为是显式上下文。

匿名用户

我看你的课堂设计还可以改进。 不创建本地对象,您可以只创建对象的指针,这隐式地很小心,您不会陷入隐式转换的混乱。

对于一个boolean值[如果您确实需要它],您可以直接放一个bool作为任何附加逻辑的类成员。 这直接在代码中表达了意图。

class myClass{
 ...
 bool isOn;

public:
 bool getIsOn(){
     return isOn;
 }
};

司机:

int main(int argc, char **argv){
  std::unique_ptr<myClass> obj =  std::make_unique<myClass>();
  if(obj){
    //do stuff
  }
  //...
  if(!obj){
    //do other stuff
  }
  return 0;
}

相关问题


MySQL Query : SELECT * FROM v9_ask_question WHERE 1=1 AND question regexp '(设置|c++|类|布尔值)' ORDER BY qid DESC LIMIT 20
MySQL Error : Got error 'repetition-operator operand invalid' from regexp
MySQL Errno : 1139
Message : Got error 'repetition-operator operand invalid' from regexp
Need Help?