我的课程Graf
看起来像这样:
class graf{
private:
int n, m;
nod a[100];
public:
graf(int n, int m);
graf operator~();
};
我的课程
nod
看起来像这样:class nod{
private:
muchie *a;
public:
nod();
nod(nod &x);
~nod();
nod &operator=(nod &x){
int i;
this->id=x.id;
this->nr=x.nr;
for(i=0;i<=nr;i++) this->a[i]=x.a[i];
return *this;
}
void operator+(nod &y);
};
当我尝试运行下面的简单代码时,编译器会说:
No viable overloaded '='
。如果我删除了nod
中的'='过量收费,就不会有错误,因此我想问题出在此过量收费上吗?我真的不知道怎么了。graf gt(4,4);
gt=~g; // where g is an already declared graf
问题不在于
~
过度充电,我尝试了它而没有=
过度充电,它可以正确地运行代码。编辑:
graf graf::operator~(){
nod nodc;
int i,j;
graf gt(this->getN(), this->getM());
for(i=1;i<=this->getN();i++){
nodc=this->getNode(i);
for(j=0;j<=nodc.getNr();j++){
gt.getNode(nodc.getMuchie(j).getY()->getId()) + (gt.getNode(nodc.getMuchie(j).getY()->getId()), gt.getNode(i));
}
}
return gt;
}
最佳答案
nod &operator=(nod &x)
必须更改为nod &operator=(const nod &x)