对C ++很陌生,第一次尝试使用模板。我创建了一个结构treeNode
,它有左,右和父指针。我希望树能够存储多种数据类型,因此我正在使用模板。每当我尝试在.cpp文件中创建结构的实例,然后使用它来访问树的左/右指针时,我会收到此错误:成员访问不完整类型struct'treeNode'。对我缺少的东西有任何想法吗?
这是.h文件中的代码(结构定义):
template <class T>
struct treeNode {
node<T> *l;
node<T> *r;
node<T> *p;
};
这是我在.cpp文件中的尝试:
#include "RedBlack.h"
struct treeNode* t;
Tree::Tree() {
t->l = NULL;
}
答案 0 :(得分:2)
struct
,因此成员应具有相同类型的struct
本身。Tree
类)由于您希望拥有通用树,因此Tree
类也应该是通用的:
template <class T>
struct node {
node<T> *l;
node<T> *r;
node<T> *p;
};
template <class T>
class Tree
{
private:
node<T> *root;
public:
Tree() : root(nullptr) { }
};
Tree<int> *tree = new Tree<int>();
答案 1 :(得分:0)
treeNode
没什么 - 字面意思不是 - 没有它的模板参数。
你必须这样做:
treeNode <int> * t;
或类似的东西。
答案 2 :(得分:0)
除此之外你没有设置模板参数,似乎你写了一个错字。而不是
template <class T>
struct treeNode {
node<T> *l;
node<T> *r;
node<T> *p;
};
应该是
template <class T>
struct treeNode {
treeNode<T> *l;
treeNodeT> *r;
treeNode<T> *p;
};