当多个适合时,设置首选运算符

时间:2013-03-17 23:44:08

标签: c++ operator-overloading std

我有一个名为mc_int的类,它实际上是一个具有一些特殊能力的int。它设置了operator int()

mc_int::operator int() {
        return value;   //int mc_int::value - the real int value of the class
}

但是当我尝试cout<<类时,我必须始终将类强制转换为int(cout<<(int)mc_int_instance,因为我收到了错误:

  

多个运营商“&lt;&lt;”匹配这些操作数。

同样,这可能是因为类还定义了 <<运算符。该怎么办?

1 个答案:

答案 0 :(得分:0)

如果您使用的是C ++ 11,则可以使用explicit关键字进行设置,因此您必须明确转换为int。更多信息here

explicit mc_int::operator int()

现在,当你使用它时,应该使用你定义的<<运算符方法,它应该不再对编译器不明确。如果你想使用int,只需像你一样使用int或static_cast<int>(the_object)