如何设置 c++ 类的布尔值?
How to set the boolean value for a c++ class?
我想知道如何为类设置布尔值。 我在其他人的代码中看到了这一点,但我自己不知道该怎么做。格式将如下所示:
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;
}
你需要提供一个转换函数来bool
你的类,如下所示:
class myClass{
public:
explicit operator bool() const { /* ... */ }
};
最好将转换explicit
以避免意外转换。在if
语句中使用它很好,因为这被认为是一个显式上下文。
我看到你的类设计可以改进。 您可以只创建对象的pointer
,而不是创建本地对象,这隐式地照顾,并且您不会陷入隐式转换的混乱。
对于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;
}
相关文章:
- 在没有定义返回类型的函数中返回布尔值,并将结果保存在无错误的char编译中-为什么
- 变量定义到C++布尔值转换
- 如何确保在使用基于布尔值的两个方法之一调用方法时避免分支预测错误
- 重载更少,则运算符返回相反的布尔值
- 将此布尔值传递给此函数的最有效方法是什么?
- 如何设置 c++ 类的布尔值?
- 使用 MAKEWORD / MAKEWPARAM 使用布尔值而不是布尔值
- 将 10 个线程与原子布尔值同步
- 创建类似于布尔值的变量类型
- 布尔值向量的基于范围 for 循环
- 零点和布尔值之间的比较
- 简化对两个布尔值的 4 个 if/else 检查
- 无法创建带有布尔值和矢量的地图
- 对于完成布尔值设置为 true 后未停止的循环
- fstream / ifstream / ofstream 对象如何转换为布尔值
- C++:将值赋值给原始数据类型(例如布尔值)是原子操作吗?
- 为什么布尔值不能比作最后一点?
- 如何使用返回布尔值的函数?
- 将uintptr_t转换为布尔值会使 SSO 基准速度减慢数倍
- 布尔值始终评估为真