0

我有一个名为的类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,因为我收到错误:

多个运算符“<<”匹配这些操作数。

同样,这可能是由于该类还 <<定义了运算符。在这里做什么?

4

1 回答 1

0

如果您使用的是 C++11,则可以使用explicit关键字来制作它,因此您必须显式转换为int. 更多信息在这里

explicit mc_int::operator int()

现在,当您使用它时,应该使用<<您定义的运算符方法,并且它对编译器应该不再模棱两可。如果您确实想使用 int,只需像您一样或使用static_cast<int>(the_object).

于 2013-03-17T23:57:59.263 回答