#include <iostream>using namespace std;struct A{ explicit operator bool() const { return true; } operator int() { return 0; }};int main(){ if (A()) { cout << "true" << endl; } else { cout << "false" << endl; }}
我的期望是A()将使用我的运算符bool()从上下文转换为bool,因此打印为true.
但是,输出为false,表示调用了运算符int().
为什么我的显式运算符bool未按预期调用?
解决方法 因为A()不是const,所以选择了运算符int().只需将const添加到其他转换运算符即可:#include <iostream>using namespace std;struct A{ explicit operator bool() const { std::cout << "bool: "; return true; } operator int() const { std::cout << "int: "; return 0; }};int main(){ if (A()) { cout << "true" << endl; } else { cout << "false" << endl; }}
Live Example打印:“bool:true”并且没有const它打印“int:false”
或者,创建一个命名常量:
// operator int() without constint main(){ auto const a = A(); if (a) // as before}
@L_502_1@打印“bool:true”.
总结以上是内存溢出为你收集整理的c – 为什么我的“显式运算符bool()”没有被调用?全部内容,希望文章能够帮你解决c – 为什么我的“显式运算符bool()”没有被调用?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)