重载operator =不起作用

时间:2013-12-21 16:32:26

标签: c++ operator-overloading

我想重载operator =并且我有以下运算符函数

int IntegerClass::operator=(IntegerClass integer) {
  return  integer.number;
}

这应该是正确的吗?

在另一个类中,我想将对象private member(int)分配给另一个int,即

int x = integerClass; 

但是当我编译时,我得到以下错误

error: cannot convert 'std::IntegerClass' to 'int' in initialization

我的运算符重载的实现有什么问题?函数应该是什么样的?

1 个答案:

答案 0 :(得分:4)

您的运算符将一个IntegerClass的赋值重载到另一个,但您尝试将(实际上它的初始化)分配给内置的int。您需要定义隐式转换运算符。

代码应该是这样的(对不起,我不记得确切的语法)

IntegerClass::operator int() {
  return number;
}