0
我上課的時候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
的問題是不是~
過充,我試了一下無=
過充電和它可能properply運行代碼。
編輯:
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;
}
不要讓我們矇在鼓裏。編譯器不只是說「沒有可行的重載」='「。它還明確指出了它試圖做的事情,從而觸發了缺乏超載的情況。那是...?我猜測它說明了一個關於期望值的問題。在這種情況下,您的'operator ='可以更好地服務於採用'const'引用而不是熱門引用。 'nod&operator =(nod const&x)' – WhozCraig
'nod&operator =(nod&x)'想要一個非const引用。看起來你在非const引用不能綁定到參數的上下文中使用它。你也沒有發佈最小,完整和可驗證的例子,所以我投票結束這個。 – SergeyA
你可以顯示'graf operator〜();'的代碼嗎? –