指向向量的指针作为类成员指向函数

时间:2018-03-21 22:26:20

标签: class c++11 vector graph member

我是个菜鸟。在Clion中使用C ++

我在笛卡尔平面上建立N个随机节点的图表

我有一个简单的类型,节点(只是一个点)(int x,int y)
节点pt(x,y)

我有一个N个随机生成的独特点的向量(这会被视为有序点btw吗?) vector NodeList(N);

我有一个Graph(Incomplete)类,它有一个GenNodelist函数,我已经测试它作为一个独立的程序。我有一段时间只是在没有编译错误的情况下构建构造函数。

    #include <iostream>
    #include <vector>
    #ifndef DIJKSTRA_GRAPH_H
    #define DIJKSTRA_GRAPH_H

    using namespace std;

    class Graph {

        private:
            int x;
            int y;
            vector<int> NodeList;
            int *np;
     public:

     //constructor
   x(x),y(y),NodeList(),np(){}


    void GenNodeList(vector<int> NL(), int &np) {x,y,NodeList, &np; }

    void GenNodeList(vector<int> *NL, int *p);

    };


    #endif //DIJKSTRA_GRAPH_H


void Graph::GenNodeList(vector<int>* NL, int* p) {
                             .
                             .
 }                            .
...  code that builds and has been quasi tested 

所以一切都建立起来,并且有一个'#34; hello world&#34;该项目的主要计划。 2个类,(节点和图形:2个标题和2个cpp文件)以及主要的&#34; hello world&#34;建立和运行。现在从main()我想从main调用GenNode函数。我只是想传递一个指针并让列表生成并坐在内存中UN-mutable。马上。我稍后会建立这个图表。当我尝试调用该函数时,没有任何作用。如何构建此列表并从main()和Graph()访问它?

main(){
    vector<int> NL(N);
    int *np;

    Graph::GenNodeList( NL, np);
}

似乎无法解决这个问题。

2 个答案:

答案 0 :(得分:0)

这段不完整的代码

Graph::GenNodeList( NL, np);

格式错误,因为该方法不是静态的。您必须为非静态成员访问类Graph的实例。这里没有任何关于oop,只是语言的规则。

答案 1 :(得分:0)

Graph():   x(x),y(y),NodeList(),np(){}

static void GenNodeList(vector<node>* NL, node* np);

void Graph::GenNodeList(vector<node>* NL, node* p) {

int main() {
    vector<node> NL(N);
    vector<node>* NList;
    node *np = nullptr;

    NList = &NL;

    Graph::GenNodeList(NList,np);

return 0;

https://github.com/Pasqualino31/Dijkstra/tree/Pasqualino31-patch-2