C++ 类运算符无法访问成员变量

C++ 类运算符无法访问成员变量,c++,class,operator-overloading,member-variables,C++,Class,Operator Overloading,Member Variables,我正在研究一个整数类,它应该能够做基本的算术。整数值存储在一个数组中,其中每个数组元素包含两个整数值。我将这个整数数组转换为成员变量integer class Integer { private: char* arr; bool t; int integer; int arr_len; public: ... Integer operator-(); Integer operator+(Integer& i); ... }; 第一个运算符应该只是对整数值求反。但是

我正在研究一个整数类,它应该能够做基本的算术。整数值存储在一个数组中,其中每个数组元素包含两个整数值。我将这个整数数组转换为成员变量integer

class Integer {
private:
  char* arr;
  bool t;
  int integer;
  int arr_len;

public:
...
Integer operator-();
Integer operator+(Integer& i);
...
};  
第一个运算符应该只是对整数值求反。但是,VS告诉我,我没有足够的运算符参数。此外,我无法访问两个运算符中的成员变量,并且未定义独立整数

Integer& operator-()
{
  Integer temp;
  temp.integer = -integer;;
  return temp;
}

Integer& operator+(Integer& i)
{
  Integer temp;
  temp.integer = integer + i.integer;
  return temp;
}

必须指出运算符属于类
Integer

为此,请在每个运算符的名称之前添加
Integer::

此外,运算符定义中的签名与声明不匹配。它们在声明中返回
Integer
,但它们被定义为返回
Integer&

Integer Integer::operator-()
{
  Integer temp;
  temp.integer = -integer;
  return temp;
}

Integer Integer::operator+(Integer& i)
{
  Integer temp;
  temp.integer = integer + i.integer;
  return temp;
}

您需要告诉编译器希望运算符属于哪个类。通过向函数的实现中添加一个作用域,可以做到这一点。
Integer::operator-()
您可能也想修复悬空引用;-)非常感谢。但是现在VS告诉我声明不兼容。@Alex抱歉,修复了。@rafix07为什么?运算符是(一元)
-
+
,而不是
-=
+=
@MikeCAT您能解释一下为什么我要使用运算符重载的参考,或者提供一个链接到一个已经问过的问题吗?