Class 作为类成员指向向量的指针指向函数中的向量
我是个笨蛋。C++在克利永< /P> 我在笛卡尔平面上建立一个由N个随机节点组成的图 我有一个简单的类型,node(只是一个点)(intx,inty)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
节点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;