c++ - 类指针和二元运算符 + 类指针类型的无效操作数

标签 c++ class operator-overloading operators

我正在尝试重载 + 运算符,以便它需要两个类。在每个称为 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/

相关文章:

c++ - 是否有可能为 std::map 重载 << 运算符,其中包含对 std:string 和 std::vector<int>?

c++ - C++ 中任何好的范围查询库(使用 K-D 树、四叉树或 R 树)

c++ - Qt 请求从不触发 finished() 信号

c++ - 为什么以及何时应该使用 IPC_NEW 创建信号量?

c++ - 使用bloodshed dev-c++创建泛型类调用的头文件是什么?

java - 可调用的 Dao 动态方法

C++ KOALA 图形库 - 了解访问数据结构的语法

c++ - 没有typedef返回成员函数指针的语法是什么?

c++ - 结构化绑定(bind)的 decltype(auto) 是否应该是引用?

typescript - 如何为默认导出包含类的对象的模块提供符合人体工程学的类型?