小编use*_*818的帖子

c ++覆盖已定义的变量

我有以下主要功能,使用指针创建系数的乘积.它只是项目的一小部分,用于创建多项式:

#include "header.h"
int main()
{
    TermProd x = TermProd( new Coeff(4), new Coeff(8));
    x.print(); cout << endl;
    x = TermProd( new Coeff(8), new Coeff(15));
    x.print(); cout << endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

经过测试,覆盖似乎正在起作用.但是当我在x上调用print时,我会遇到分段错误.我已经尝试并盯着它看了一段时间,但我无法弄清楚真正的问题.此外,我的搜索没有导致正确的方向,所以我决定创建一个小的代码片段来重现错误.

我的header.h文件如下所示:

class Term{
public:
    Term(){};
    virtual ~Term(){};
        virtual Term* clone() const = 0;
    virtual void print() const = 0;
};

class Coeff:public Term{
    int m_val; //by def: >=0
public:
    // Constructor
    Coeff();
    Coeff(int val = 1):m_val(val)
    // Copy constructor
    Coeff* clone() const{return new Coeff(this->val());}
    // Destructor
    ~Coeff(){} …
Run Code Online (Sandbox Code Playgroud)

c++ pointers overwrite

4
推荐指数
1
解决办法
5515
查看次数

标签 统计

c++ ×1

overwrite ×1

pointers ×1