我的班级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;
}
答案 0 :(得分:2)
nod &operator=(nod &x)
必须更改为nod &operator=(const nod &x)