我試圖訪問我的嵌套類,所以我可以在這個函數返回的對象:如何創建嵌套類的對象?
Graph::Edge Graph::get_adj(int i)
{
Graph::Edge v;
int count = 0;
for(list<Edge>::iterator iterator = adjList[i].begin(); count <= i ;++iterator)
{
v.m_vertex = iterator->m_vertex;
v.m_weight = iterator->m_weight;
}
return v;
}
不要擔心for循環(它應該theoreticly工作)我的主要問題是與申報對象Graph::Edge v;
它不工作!這是錯誤我得到:
$ make -f makefile.txt
g++ -Wall -W -pedantic -g -c Graph.cpp
Graph.cpp: In member function `Graph::Edge Graph::get_adj(int)':
Graph.cpp:124: error: no matching function for call to `Graph::Edge::Edge()'
Graph.cpp:43: note: candidates are: Graph::Edge::Edge(const Graph::Edge&)
Graph.h:27: note: Graph::Edge::Edge(std::string, int)
makefile.txt:9: recipe for target `Graph.o' failed
make: *** [Graph.o] Error 1
我要訪問的
Graph.h:27: note: Graph::Edge::Edge(std::string, int)
下面是我的類圖中聲明:(我拿出的功能和一些東西簡單,並使其更易於閱讀) *
class Graph
{
private:
vector< list<Edge> > adjList;
public:
Graph();
~Graph();
class Edge
{
public:
Edge(string vertex, int weight)
{
m_vertex = vertex;
m_weight = weight;
}
~Edge(){}
string m_vertex;
int m_weight;
};
vector < list <Edge> > get_adjList(){return adjList;}
//Other functions....
};
基本上,所有我需要知道的是申報邊緣的物體在此功能的正確方法。我真的很困惑,不知道除了Graph :: Edge v以外還有什麼可以做的事情;
我不理解'get_adj(i)'的含義,是否應該返回頂點「i」的鄰接列表的全部或鄰居列表中的某個未指定*頂點的鄰接列表的第i個鄰接項?我假設你的'adjList'是一個每個頂點鄰接列表的acutally,這意味着'adjList [i]'包含頂點'i'的鄰接點。 – leemes