Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/132.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 重载运算符=不起作用_C++_Operator Overloading - Fatal编程技术网

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;
}