Class 运算符不能访问成员变量
Class operators can not access member variables
我正在研究一个整数 class,它应该能够进行基本算术运算。整数值存储在数组中,其中每个数组元素包含两个整数值。我把这个整数数组转换成成员变量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;
}
您必须指明运算符属于 class Integer
.
为此,请在每个运算符的名称前添加 Integer::
。
此外,运算符定义中的签名与声明不匹配。它们在声明中 return 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;
}
我正在研究一个整数 class,它应该能够进行基本算术运算。整数值存储在数组中,其中每个数组元素包含两个整数值。我把这个整数数组转换成成员变量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;
}
您必须指明运算符属于 class Integer
.
为此,请在每个运算符的名称前添加 Integer::
。
此外,运算符定义中的签名与声明不匹配。它们在声明中 return 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;
}