我正在尝试重载 + 运算符,以便它需要两个类。在每个称为 Polynomial 的类中,有一个名为 polyStruct 的结构,其中包含我希望添加的数据,然后将该总和传回。但我没有运气。
完整的错误是:错误:类型“Polynomial*”和“Polynomial*”到二进制“operator+”的无效操作数
这是我的类(class):
class Polynomial {
public:
Polynomial();
Polynomial(ifstream *data);
Polynomial* copyPolynomial();
Polynomial* add(Polynomial *sec);
Polynomial operator+(const Polynomial& sec);
Polynomial* subtract(Polynomial *sec);
//poly operator-(const poly&);
bool equalPoly(Polynomial *sec);
double evaluate(int x);
int getDegree();
void print();
private:
struct poly {
int exp;
double coeff;
} *polyStruct;
List polyList;
};
这是我的运算符重载:
Polynomial Polynomial::operator+(const Polynomial& sec) {
Polynomial temp = new Polynomial();
temp.polyStruct->exp = polyStruct->exp;
temp.polyStruct->coeff = polyStruct->coeff + sec.polyStruct->coeff;
return temp;
}
尝试使用我的运算符(operator)时,我正在执行以下操作: newPoly = 主要+次要; 其中所有变量都是单独初始化的多项式。 关于我做错了什么有什么想法吗?
最佳答案
从您的错误消息看来,您正试图在两个指向 Polynomial
的指针上使用运算符。如果是这种情况,您应该首先使用 *
取消引用指针。
class Polynomial {
public:
Polynomial* operator+(const Polynomial& sec);
};
Polynomial* Polynomial::operator+(const Polynomial& sec) {
Polynomial* temp = new Polynomial();
temp->polyStruct->exp = polyStruct->exp;
temp->polyStruct->coeff = polyStruct->coeff + sec.polyStruct->coeff;
return temp;
}
Polynomial* polynomial1 = new Polynomial();
Polynomial* polynomial2 = new Polynomial();
Polynomial* polynomial3 = (*polynomial1) + (*polynomial2);
关于c++ - 类指针和二元运算符 + 类指针类型的无效操作数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43313886/