在 C++ 中,我试图将隐式转换与条件运算符一起使用。考虑这个例子:
class MyFloat
{
public:
MyFloat(float val){m_val = val;}
operator float(){return m_val;}
protected:
float m_val;
};
int main(int argc, char **argv)
{
MyFloat a = 0.5f;
MyFloat b = 1.0f;
float x = true ? a-0.5f : b;
return 0;
}
它会导致编译器错误:
error: operands to ?: have different types ‘MyFloat’ and ‘float’
我希望条件运算符隐式转换b
为a-0.5
浮点类型。但这不会发生。我如何实现这种隐式转换?
理想情况下,我想避免静态强制转换或访问器方法,如float MyFloat::getValue()
.