我想在 + 2 个对象时返回整数。但它发现了错误
E2140 表达式必须具有整数或无作用域的枚举类型
错误 C2110“+”:无法添加两个指针
class Sum {
int number;
public:
Sum(int number) : number(number) {};
int getNumber() const { return number; }
void setNumber(int val) { number = val; }
int operator+ (Sum* d1) {
int result;
result = this->getNumber() + d1->getNumber();
return result;
}
};
int main() {
Sum* num1 = new Sum(17);
Sum* num2 = new Sum(9);
int result = num1 + num2;
cout << result;
}
我可以重载 2 个对象以获得整数结果吗?
因为运算符是在类中定义的,所以它的左侧必须是 type Sum
,右侧必须是 type Sum*
(因为那是 parameter 的类型d1
)。
但是,您尝试在此处添加两个指针:
int result = num1 + num2;
正确的是取消引用左侧
// V
int result = *num1 + num2;
更好的是使用引用作为右侧参数重载运算符并且根本不使用new
(您实际上不需要new
在现代 C++ 中使用)。
// VVVVV V
int operator+ (const Sum &d1) {
return this->getNumber() + d1.getNumber();
}
...
int main() {
Sum num1(17);
Sum num2(9);
int result = num1 + num2;
cout << result;
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句