我收到以下錯誤從地圖匹配的返回值的類型返回值
In file included from /Users/james/ClionProjects/United States Computing Olympiad/graphs.cpp:2:
In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/string:439:
In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/algorithm:628:
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/memory:1673:31: error: no matching constructor for initialization of 'Vertex'
::new((void*)__p) _Up(_VSTD::forward<_Args>(__args)...);
這裏是我的代碼的相關部分的刪節版:
class Vertex {
public:
int label;
vector<Vertex> adjacent_vertices;
Vertex(const int l) : label(l) { }
Vertex(const int l, vector<Vertex> adjacents) : label(l), adjacent_vertices(adjacents) { }
Vertex(const Vertex& other_vertex) : label(other_vertex.label), adjacent_vertices(other_vertex.adjacent_vertices){ }
};
class Graph {
public:
unordered_map<int, Vertex> vertices;
protected:
Vertex getmake_vertex(const int v) {
if (vertices.find(v) == vertices.end()) {
// not found, make new vertex
vertices[v] = Vertex(v);
}
return vertices[v];
};
};
我已經確認運行此註釋掉的所有內容都會產生編譯器錯誤。有人可以向我解釋爲什麼會發生這種情況,以及我如何解決它? Here是具有完整編譯器輸出的要點。
該方法的目的是創建頂點,如果它不存在,然後返回它。由於每個頂點都需要一個標籤,我該如何創建一個默認構造函數? –
這確實是你怎麼做的,如果你的班級沒有默認的c'tor – haavee
是的,沒關係。你仍然把它保存在你的'if(vertices.find(v)...)塊中 – xaxxon