【发布时间】:2017-07-29 17:33:05
【问题描述】:
我想创建一个类似这样的结构:
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。
标签: c++ class oop templates abstract-class