请高手进来看看!一个蛮难的问题!-----100分
我定义了一个类,里面的数据是一个链表。如下:
1。链表
class PolynNode
{
public:
float fc;
float fpower;
PolynNode *link;
};
2。我的累
class Polyn
{
public:
Polyn();
~Polyn(){Erase();}
bool IsEmpty() const{return first==0;}
int Length() const;
bool Find(int k, float& fc,float& fpower) const;
int Search(const float& fpower) const;
Polyn& Delete(int k, float& fc,float &fpower);
Polyn& Insert(int k,const float& fc,const float& fpower);
void Erase();
Polyn& Append(const float& fc,const float& fpower);
void Output(ostream& out) const;
void operator=(const Polyn& x);
Polyn operator+(const Polyn& x) const;
private:
PolynNode *first;
PolynNode *last;
};
其中void operator=(const Polyn& x)的定义如下:
Polyn Polyn::operator +(const Polyn& x) const
{Polyn a;
//一些其他的操作
return a;
}
编译没问题,肯定通过,但是运行就有问题了,如在a=b+c时(a,b,c都为Polyn型),因为重载的+操作中,变量在return是已经调用析构函数~Polyn()把a的数据全部delete了,所以返回后就出错了。请各位高手帮忙!!!!!!!