我尝试实例化时遇到了访问内存错误:
Ferma(long _id, int _supr, int _nrp, Produs *_produse) :idFerma(_id),suprafata(_supr),nrproduse(_nrp){
for (int i = 0; i < this->nrproduse; i++)
produse[i] = _produse[i];
nrFerme++;
}
这是类的构造函数; visual studio将我引导到重载operator =的第二行=作为错误的原因;
Produs &operator=(const Produs p){
this->pret = p.pret;
this->stoc = p.stoc;
this->denumire = new char[strlen(p.denumire) + 1];
strcpy(this->denumire, p.denumire);
return *this;
}
这是重载的operator =
Ferma f3(55, 1500, nr, prod);
我已经从文件中读取了prod数组,看起来还不错;顺便说一下,我知道我不应该使用char *但这是我必须这样做的方式..所以任何帮助都将不胜感激
答案 0 :(得分:0)
您的赋值运算符生成副本
Produs &operator=(const Produs p){
在源实例中,你的拷贝构造函数也正确实现了吗?