将对象分配给另一个对象时,没有可行的重载'='

时间:2016-03-16 20:49:49

标签: c++

我的班级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;
}

1 个答案:

答案 0 :(得分:2)

nod &operator=(nod &x)必须更改为nod &operator=(const nod &x)