我有以下主要功能,使用指针创建系数的乘积.它只是项目的一小部分,用于创建多项式:
#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)