我有一个关于圆形模板参考的构造。我想用类节点和类边做一棵树,如下所示:圆形模板参考结构
template <typename EdgeT>
class node
{
public:
std::vector<EdgeT> edge_out;
std::vector<EdgeT> edge_in;
};
template <typename NodeT>
class edge
{
public:
NodeT* src;
NodeT* dst;
int weight;
};
template <typename NodeT, typename EdgeT>
class graph
{
public:
std::vector<NodeT> nodes;
};
我发现我不能宣布图形类ex:
graph< node, edge > g; // <--- this cannot be solved
graph< node< edge <node.....>, edge< node< edge>> > //it makes infinity declaration..
我如何重新定义类的结构?
它是否必须模板化? – Xymostech 2013-03-11 01:59:48
“边缘”和“节点”类应该有基类。我打算重用它们。如果继承的边缘可以包含“flow”“reverse_flow”....或者继承的“节点”类可以包含更多数据,例如flag,..etc ...这就是为什么我将它们作为模板 – MooMoo 2013-03-11 02:05:34
这不是对我来说有意义......一个节点如何能够拥有源和目的地的边缘?源不是始终是节点本身吗?它应该有一个节点列表... – Mehrdad 2013-03-11 02:57:44