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

Class 作为类成员指向向量的指针指向函数中的向量,class,c++11,vector,graph,member,Class,C++11,Vector,Graph,Member,我是个笨蛋。C++在克利永< /P> 我在笛卡尔平面上建立一个由N个随机节点组成的图 我有一个简单的类型,node(只是一个点)(intx,inty) 节点pt(x,y) 我有一个由N个随机生成的唯一点组成的向量(顺便问一下,这会被认为是有序点吗?) 向量节点列表(N) 我有一个类图(不完整),它有一个函数GenNodelist,我已经作为一个独立程序进行了测试。我花了很长时间才让构造函数在没有编译错误的情况下构建 #include <iostream> #inclu

我是个笨蛋。C++在克利永< /P> 我在笛卡尔平面上建立一个由N个随机节点组成的图

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

我有一个由N个随机生成的唯一点组成的向量(顺便问一下,这会被认为是有序点吗?) 向量节点列表(N)

我有一个类图(不完整),它有一个函数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 
#包括
#包括
#ifndef DIJKSTRA_图
#定义DIJKSTRA图
使用名称空间std;
类图{
私人:
int x;
int-y;
向量节点列表;
int*np;
公众:
//建造师
x(x),y(y),NodeList(),np(){}
void GenNodeList(vector NL(),int&np){x,y,NodeList,&np;}
void GenNodeList(vector*NL,int*p);
};
#endif//DIJKSTRA\u图
void图::GenNodeList(vector*NL,int*p){
.
.
}                            .
...  构建并经过准测试的代码
所以一切都会建立起来,项目中有一个“hello world”主程序。这两个类(节点和图形:2个标题和2个cpp文件)以及主“hello world”构建和运行。现在,从main()我想从main调用GenNode函数。我只想传递一个指针,让列表生成并保存在内存中不可变。马上稍后我将根据此创建图表。当我试图调用该函数时,什么都不起作用。如何构建此列表并从main()和Graph()访问它

main(){
载体NL(N);
int*np;
图:GenNodeList(NL,np);
}

似乎无法理解这一点。

这段不完整的代码

Graph::GenNodeList( NL, np);
是格式错误的,因为该方法不是静态的。您必须访问非静态成员的类图实例。这里没有关于oop的内容,只是语言规则。

Graph():x(x),y(y),NodeList(),np(){}
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;
静态void GenNodeList(向量*NL,节点*np); void图::GenNodeList(向量*NL,节点*p){ int main(){ 载体NL(N); 向量*NList; node*np=nullptr; NList=&NL; 图形::GenNodeList(NList,np); 返回0;

您提供的代码离编译还差得远。如果代码是最小的,请创建一个实际代码,它将无法编译。当然,这不会编译。我认为您不理解-如果没有它,我们将无法帮助您。此外,您提供的代码无法编译,原因除了“最小”之外还有很多我的代码编译得很好,除了main()@Pasqualino31中的函数调用之外。这是“HTF”,您可以用一个最小、完整且可验证的代码示例来说明您的问题:
void addOne(vector*v){v.push_back(1);}int main(){vector vec;addOne(vec);cout
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;