我创建了一个名为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();
};
};