不匹配operator =

时间:2015-08-22 14:18:17

标签: c++ operator-overloading

我创建了一个名为data的类,并重载了一些运算符,以对该类的对象执行某些操作。

class data{
public:
int distance;
int parent;
int node_number;
data();
data(int, int, int);
bool operator<(data &);
bool operator>(data &);
bool operator>=(data &);
bool operator<=(data &);
bool operator==(data &);
void operator=(data &);
data operator+(int &);
};

两个重载的运算符定义如下。

对于赋值运算符:

void data::operator=(data & d){
this->distance = d.distance;
this->parent = d.parent;
this->node_number = d.node_number;
}

添加运算符:

data data::operator+(int & d){
data l;
l.node_number = this->node_number;
l.parent = this->parent;
l.distance = this->distance + d;
return l;
} 

当我在我的一个函数中使用这个类的对象时..

void d1::dijkstra::relax(int u, int v){
data accumulated_weight;
accumulated_weight = *this->v[u] + this->g[u][v]; //Getting error at this line
if(*this->v[v] > accumulated_weight){
    this->fh.fib_heap_decrease_key(*this->v[v], accumulated_weight);
    this->v[v]->parent = u;
}
}

我在指示的行上收到错误。

错误说:'operator ='不匹配(操作数类型是'data'和'data')| 注意:参数1从'data'到'data&amp;'

没有已知的转换

我使用的方法有什么问题?应该用什么方法来使用它?

编辑:这个指针指的是这个类:

namespace d1{
    class dijkstra{
    private: int number_of_vertices;
    private: std::vector< std::vector<int> > g;
    private: std::vector<data *> v;
    private: int source;
    private: a1::heap fh;
    private: void initialize_single_source();
    private: void relax(int, int);
    public: dijkstra(std::vector< std::vector<int> > &, int);
    public: void run();
    public: void print_graph();
};
};

0 个答案:

没有答案