【发布时间】:2021-12-28 16:03:18
【问题描述】:
我有两个用 C++ 定义的类,如下所示。
#include <vector>
#include <tuple>
#include <map>
template <class T> class node {
public:
int NodeID; //ID used to identify node when inserting/deleting/finding.
T data; //generic data encapsulated in each node.
std::vector<node*> children; //child nodes, list of ptrs
std::vector<node*> parents; //parent nodes list of ptrs
};
class DAG {//Class for the graph
std::vector<node*> Nodes;
}
但是,我在 DAG 中收到一条错误消息,提示“使用类模板节点需要模板参数”。我完全失去了任何帮助,非常感谢。
【问题讨论】:
-
node是模板类。node<SomeType>是一种类型。如果你写node*,node类中的T类型是什么? -
换句话说:
node不是一个类。它用作多个类的模板,您可以从node<T>获得,T是其他类型。另请注意,它们不共享一个公共基类,以防万一您想这样使用它们。提示:您可能想要一个template<class T> class DAG,其中包含一个vector<node<T>*>作为成员。 -
可能令人困惑的是,在
node类中您只能使用node*。这是因为此时名称node指的是类本身,并且假定了其T参数。