Tôi có mẫu Vertex ở đỉnh.h. Từ biểu đồ của tôi.h:Điều gì làm cho "người khai báo không hợp lệ" này? C++
20 template<class edgeDecor, class vertexDecor, bool dir>
21 class Vertex;
mà tôi sử dụng trong mẫu Đồ thị của mình.
Tôi đã sử dụng mẫu Vertex thành công trong suốt Biểu đồ, trả về con trỏ tới Đỉnh, v.v. Lần đầu tiên tôi cố gắng khai báo và khởi tạo đối tượng Vertex và gcc cho tôi biết rằng 'người khai báo' của tôi là 'không hợp lệ'. Làm sao có thể?
81 template<class edgeDecor, class vertexDecor, bool dir>
82 Graph<edgeDecor,int,dir> Graph<edgeDecor,vertexDecor,dir>::Dijkstra(vertex s, bool print = false) const
83 {
84 /* Construct new Graph with apropriate decorators */
85 Graph<edgeDecor,int,dir> span = new Graph<edgeDecor,int,dir>();
86 span.E.reserve(this->E.size());
87
88 typename Vertex<edgeDecor,int,dir> v = new Vertex(INT_MAX);
89 span.V = new vector<Vertex<edgeDecor,int,dir> >(this->V.size,v);
90 };
Và gcc đang nói:
graph.h: In member function ‘Graph<edgeDecor, int, dir> Graph<edgeDecor, vertexDecor, dir>::Dijkstra(Vertex<edgeDecor, vertexDecor, dir>, bool) const’:
graph.h:88: error: invalid declarator before ‘v’
graph.h:89: error: ‘v’ was not declared in this scope
Tôi biết điều này có lẽ là một câu hỏi noob, nhưng tôi sẽ đánh giá cao sự giúp đỡ nào.
Có lẽ không liên quan đến vấn đề này, nhưng bạn có chắc chắn muốn "= Vertex mới (INT_MAX)" không? Bạn có lẽ có nghĩa là "đỉnh" uncapitalised (mà tôi giả định là một typedef)? Ngoài ra Vertex <...> thực sự có một ctor lấy một con trỏ Vertex/đỉnh? –