我有一个名为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;”匹配这些操作数。
同样,这可能是因为类还定义了 <<
运算符。该怎么办?
答案 0 :(得分:0)
如果您使用的是C ++ 11,则可以使用explicit
关键字进行设置,因此您必须明确转换为int
。更多信息here:
explicit mc_int::operator int()
现在,当你使用它时,应该使用你定义的<<
运算符方法,它应该不再对编译器不明确。如果你想使用int,只需像你一样使用int或static_cast<int>(the_object)
。