成员访问不完整类型错误:模板化结构C++
Member access into incomplete type error: Templatized struct C++
C++很新,我第一次尝试模板。我创建了一个结构,treeNode
,具有左,右和父指针。我希望树能够存储多种数据类型,因此正在使用模板。每当我尝试在.cpp文件中创建结构的实例,然后使用它来访问树的左/右指针时,我都会收到此错误:成员访问不完整类型的结构"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
本身。 - 第二件事:模板不像Java中的泛型。在您将类型变量替换为实际类型之前,它们不会提供真正的可用实现,因此您必须始终使用它们专用或在另一个模板上下文中保留某些类型变量仍未选择(例如下面的
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>();
没有
模板参数,treeNode
就什么都不是——字面上不是东西。
您必须执行以下操作:
treeNode <int> * t;
或类似的东西。
除此之外,您没有设置模板参数,似乎您打错了字。而不是
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;
};
相关文章:
- 如何循环打印顶点结构
- 通过方法访问结构
- 使用不带参数的函数访问结构元素
- 预处理器:插入结构名称中的前一个行号
- 为什么在没有显式默认构造函数的情况下,将另一个结构封装在联合中作为成员的结构不能编译
- 孤立代码块在结构中引发异常
- 有什么方法可以遍历结构吗
- 如何在 C# 中映射双 C 结构指针?
- 如何在C++中使用结构生成映射
- 无法将结构注册为增强几何体3D点
- 多成员Constexpr结构初始化
- C++将文本文件中的数据读取到结构数组中
- 如何重构类层次结构以避免菱形问题
- 如何在C++中序列化结构数据
- std::vector的包装器,使数组的结构看起来像结构的数组
- 没有为自己的结构调用列表推回方法
- 奇怪的结构&GCC&clang(void*返回类型)
- 在 c++ 中拥有一组结构的正确方法是什么?
- vscode g++链路故障:体系结构x86_64的未定义符号
- C++概念:如何使用'concept'检查模板化结构的属性?