【发布时间】:2018-04-18 07:39:06
【问题描述】:
#include"stdafx.h"
#include<iostream>
class Item
{
int exponent;
double coefficient; //two private members
public:
//constructor
Item(int exp = 0, int coef = 0) :exponent(exp), coefficient(coef) {}
Item(Item& item) {
exponent = item.exponent;
coefficient = item.coefficient;
} //copy constructor
//interface to change private member exponent
void change_exp(const int n) {
Item::exponent = n;
}
//interface to change private member coefficient
void change_coef(const double n) {
Item::coefficient = n;
}
int get_exp() { return exponent; }// interface to get exponent
double get_coef() { return coefficient; }// interface to get coefficient
~Item() {}
Item operator=(Item item2) {
change_exp(item2.get_exp());
change_coef(item2.get_coef());
return (*this);
}
Item operator*(Item & item2) {
Item result;
result.change_coef(coefficient * item2.get_coef());
result.change_exp(exponent + item2.get_exp());
return result;
}
};
int main() {
Item test(2, 7);
Item test2(4, 5);
Item result;
result = test * test2; //BUG!!!
return 0;
}
bug出现在注释BUG的那一行
错误 C2679 二进制“=”:未找到采用“项目”类型右侧操作数的运算符(或没有可接受的转换)
当我只分配一个对象时
结果=测试;
没事。
我不知道我的 = 重载函数哪里出了问题。
请帮忙......
【问题讨论】:
-
你能把这个减少到minimal test case吗?
标签: c++ visual-c++ operator-overloading