C++ 重载运算符=不起作用
我想重载操作符=并且我有以下操作符函数C++ 重载运算符=不起作用,c++,operator-overloading,C++,Operator Overloading,我想重载操作符=并且我有以下操作符函数 int IntegerClass::operator=(IntegerClass integer) { return integer.number; } 这应该是正确的吗 在另一个类中,我想将对象私有成员(int)分配给另一个int,即 int x = integerClass; 但是当我编译时,我得到了以下错误 error: cannot convert 'std::IntegerClass' to 'int' in initializati
int IntegerClass::operator=(IntegerClass integer) {
return integer.number;
}
这应该是正确的吗
在另一个类中,我想将对象私有成员(int)分配给另一个int,即
int x = integerClass;
但是当我编译时,我得到了以下错误
error: cannot convert 'std::IntegerClass' to 'int' in initialization
我的运算符重载实现有什么问题?函数应该是什么样子?您的运算符重载一个整型类到另一个整型类的赋值,但您试图将(实际上是初始化)赋值给内置的int。您需要定义隐式转换运算符 代码应该是这样的(对不起,我不记得确切的语法)
运算符重载一个整数类到另一个整数类的赋值,但您正试图将(实际上是初始化)赋值给内置的int。您需要定义一个隐式转换运算符 代码应该是这样的(对不起,我不记得确切的语法)
int x=integerClass
不调用任何运算符(它是初始化而不是赋值),尤其是不调用integerClass::operator=
。如果有,您可以尝试实现IntegerClass::operator int()
,以支持到int
的隐式转换。这是什么std::IntegerClass
?标准库没有这样的类AFAIK。您已将类添加到std
?“那太糟糕了。”莱姆斯说。。这可能是因为Eclipse自动生成了一个包含整个类的名称空间;如果这是真的,您将看到代码。intx=integerClass
不调用任何运算符(它是初始化而不是赋值),尤其是不调用integerClass::operator=
。如果有,您可以尝试实现IntegerClass::operator int()
,以支持到int
的隐式转换。这是什么std::IntegerClass
?标准库没有这样的类AFAIK。您已将类添加到std
?“那太糟糕了。”莱姆斯说。。这可能是因为Eclipse自动生成了一个包含整个类的名称空间;如果这是真的,你会看到代码。对此进行一点扩展:intx=integerClass代码>不是赋值语句。如果你做了intx;x=整数类代码>那么这将是一个赋值。可能值得一提的是,在std
名称空间中引入类是一个非常糟糕的主意(可能是未定义的行为IIRC),但在允许的情况下除外。谢谢它的工作!!!但我不明白为什么不必指定返回类型。如果它返回一个整数(数字),则声明应该类似于int IntegerClass::operator int()。。不应该吗?@user2991252,运算符int
的全部目的是返回一个int。int运算符int
是多余的。对此进行一点扩展:int x=integerClass代码>不是赋值语句。如果你做了intx;x=整数类代码>那么这将是一个赋值。可能值得一提的是,在std
名称空间中引入类是一个非常糟糕的主意(可能是未定义的行为IIRC),但在允许的情况下除外。谢谢它的工作!!!但我不明白为什么不必指定返回类型。如果它返回一个整数(数字),则声明应该类似于int IntegerClass::operator int()。。不应该吗?@user2991252,运算符int
的全部目的是返回一个int。int运算符int
是多余的。
IntegerClass::operator int() {
return number;
}