首页 > 解决方案 > 类运算符不能访问成员变量

问题描述

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

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

标签: c++classoperator-overloadingmember-variables

解决方案


您必须指出运算符属于该类Integer

为此,请Integer::在每个操作员的名称之前添加。

此外,运算符定义中的签名与声明不匹配。它们Integer在声明中返回,但它们被定义为 return 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;
}

推荐阅读