我们可以在不同的类构造函数中传递一个类的对象吗?

时间:2021-06-16 05:52:19

标签: c++ constructor

我是 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);到最后一行。

<块引用>

没有匹配的函数调用 ....

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) ; 
        }
    }       
}
相关问题