【发布时间】:2018-08-12 19:32:36
【问题描述】:
有人可以帮助我如何让这种方法发挥作用吗?
// At .h file
template<typename T>
class BTree {
public:
...
private:
struct Node {
T element;
Node* left, right;
};
Node* root;
Node* getNode();
...
};
// At .cpp file
template<typename T>
BTree<T>::BTree() {
...
}
// I am stuck on how I would get the getNode() method to work
// I know it's along the lines of...
template<typename T>
BTree::Node* BTree<T>::getNode() {
...
}
我不断收到编译错误。有正确的方法吗?
编辑:我的错误。我忘了把<T>放在.cpp文件里
【问题讨论】:
-
我很乐意帮助你。但是您实际上并没有指定错误。而且您没有提供代码,我们只需复制粘贴即可得到完全相同的错误。您可以尝试修复
BTree::--->BTree<T>::。除此之外,创建一个minimal reproducible example。 -
在
BTree::Node中,符号BTree不是类型名称,它是一个可用于创建类型的模板,如果您提供模板参数. -
等等,CPP 文件?你应该知道templates better be implemented in headers