我是 C++ 的初学者,并且在创建使用另一个类的对象的类的构造函数方面非常困难。这样做时我收到错误
<块引用>没有匹配的函数调用 ....
Priority_que::Priority_que(graph g) {
for (unsigned i=0; i<g.size(); i++) {
for (unsigned j=i; j<g.size(); j++) {
g1[i][j] = g.getnode(i)(j) ; }
}
这里的 Priority_que 是一个在其构造函数中使用图类对象的类。 如果我胡说八道,请当我无辜。
编辑: 我正在添加类 Priority_que 及其构造函数,希望这会有所帮助。
class Prio_que: public graph {
public:
Prio_que(graph);
pair<int,int> minValue() ;
priority_queue<pair<int,int>, vector<pair<int,int>>, greater<pair<int,int>>> arranged ;
void dijkstra() ;
int size() ;
private:
vector<vector<int>> g1 ;
vector<int> parent ;
vector<int> dist ;
vector<bool> processed ;
vector<pair<int,int>> dist_pair ;
};
Prio_que::Prio_que(graph g) {
for (int i=0; i<g.size(); i++) {
for (int j=i; j<g.size(); j++) {
g1[i][j] = g.getnode(i,j) ; }
}
parent(g.size(),-1); //Stores Shortest Path Structure
dist(g.size(),MAX); //Keeps shortest path values to each vertex from source
processed(g.size(),false) ; //TRUE->Vertex is processed
dist_pair(g.size(), make_pair(MAX, 0)) ; }
现在错误显示在 parent(g.size(),-1);到最后一行。
<块引用>没有匹配的函数调用 ....
答案 0 :(得分:0)
那些是成员变量,需要在初始化列表中进行初始化 - 您试图将它们作为函数调用,这就是错误消息的原因。
您还应该将参数设为常量引用以避免复制它。
Prio_que::Prio_que(const graph& g)
: parent(g.size(),-1),
dist(g.size(),MAX),
processed(g.size(),false),
dist_pair(g.size(), make_pair(MAX, 0))
{
for (int i=0; i<g.size(); i++)
{
for (int j=i; j<g.size(); j++)
{
g1[i][j] = g.getnode(i,j) ;
}
}
}