我的课程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)

09-10 04:42