Очень новичок в C++ и с моей первой попыткой шаблонов. Я создал struct, 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;
}
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>();
Кроме того, вы не задали аргумент шаблона, кажется, вы сделали опечатку. Вместо
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;
};
treeNode
- ничто - буквально не вещь - без него параметры шаблона.
Ты должен сделать:
treeNode <int> * t;
Или что-то подобное.