我想创建一个类似于这样的结构:
template <typename W>
class Graph {
public:
struct Vertex {
std::vector<typename Graph<W>::Vertex> next() {
return GetNext((*this));
}
};
virtual std::vector<typename Graph<W>::Vertex> GetNext(Vertex v) = 0;
};
(不要看缺少的字段等等)
我尝试过这样的代码,但是它会出现各种错误,包括语法错误或“无法实例化”,即使我尝试实例化派生类并重写GetNext。
问题是:C++中是否允许这种结构,并如何正确实现它?
Vertex
内部(因此也在Graph<W>
内部),您可以直接使用Vertex
而不是typename Graph<W>::Vertex
。 - Jarod42