【发布时间】:2013-12-21 16:32:25
【问题描述】:
我想重载运算符 = 并且我有以下运算符函数
int IntegerClass::operator=(IntegerClass integer) {
return integer.number;
}
这应该是正确的?
在另一个类中,我想将对象私有成员(int)分配给另一个 int,即
int x = integerClass;
但是当我编译时出现以下错误
error: cannot convert 'std::IntegerClass' to 'int' in initialization
我的运算符重载实现有什么问题,函数应该是什么样子?
【问题讨论】:
-
int x = integerClass不调用任何运算符(它是初始化而不是赋值),尤其是IntegerClass::operator=。如果有的话,您可以尝试实现IntegerClass::operator int()来支持隐式转换为int。 -
这是什么
std::IntegerClass?标准库没有这样的类 AFAIK。您已将您的班级添加到std?这很糟糕。 -
@leemes .. 这可能是由于 Eclipse 自动生成了一个包含整个类的命名空间。即命名空间 std { class IntegerClass {} } ?
-
Eclipse 是您的 IDE;如果这是真的,你会看到代码。