c++ - 类运算符不能访问成员变量
问题描述
我正在研究一个应该能够进行基本算术运算的整数类。整数值存储在一个数组中,其中每个数组元素都包含两个整数值。我将这个整数数组转换为成员变量整数。
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
在声明中返回,但它们被定义为 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;
}
推荐阅读
- python - 将熊猫数据框转换为类并使用 orm 保存
- android - 从视图模型中删除当前片段并启动另一个片段
- sql - BigQuery:获取每个组的前 3 条记录
- python - log1p 是对图表进行对数比例转换的“正确”方式吗?
- ios - 打开日历应用程序的通用链接
- vue.js - vue 为每个组件创建不可观察的变量
- python-3.x - zip 参数#1 必须支持迭代,同时评估和获取未合并 python 的单个 dict
- solidity - 被调用函数应在withdraw函数中支付错误
- tensorflow - 加载在早期 tensorflow 版本中训练的已保存模型
- python - 为什么我在使用 map 函数时得到 TypeError 'list' object is not callable?