使用模板创建一个结构,该模板获取其他结构的指针
Create a struct with template which get pointers of others struct
我想创建一个平衡的树。它适用于自定义结构,因此我想通过使用模板创建包含任何类型的树来改进我的平衡树。还有我的问题:
template <typename T>
struct Branch {
float index;
T value;
Branch *inf = nullptr;
Branch *sup = nullptr;
Branch *parent = nullptr;
};
因为它是一个平衡树,所以每个分支都有 is index,并且有一个指向其父分支的指针,以及指向其两个子分支的指针。但是我无法编译此代码,我收到一个 C2079 错误,指出"Branch::value 使用未定义的'T'类"。我使用VS2017RC。
==编辑==
我在类树中找到了问题:
template <class T>
class Tree {
public:
/**/
private:
Branch<T>* _origine; //Initialized in constructor Tree() to nullptr
Branch<T> _branches[1000]; //Here is the error
/**/
};
所以问题是这个 Branch 的静态数组,但我不知道如何初始化它......
感谢您的任何回答!
我认为您的代码没有任何问题。我使用g++ -std=c++11
编译了它,没有任何错误。我用了
int main() { Branch<int> b; }
以实例化模板类。
MSDN 提到错误 C2079 当类只有前向声明或不可见时。 请参阅 https://msdn.microsoft.com/en-us/library/9ekhdcxs.aspx。这里提到的可能的解决方案是使用 T 的指针并向前声明类型 T 或包含 T 的定义。发布用于实例化的代码肯定会有所帮助。发布
您可能缺少模板参数。你应该像这样使用:
Branch<int> bint;
Branch<float> bfloat;
因此,您可以使用正确的类型访问价值
bint.value = 42;
bfloat.value = 42f;
相关文章:
- 从字符串中获取结构的大小
- 如何在结构初始化中获取成员C++
- 从 cin 获取 c++ 中结构中多个枚举的输入
- 如何通过向量中的结构 id 获取索引号
- 获取结构 c++ 中元素的索引
- 如何获取结构C++的输入
- 使用加速融合获取结构名称
- 如何使用值获取结构的索引
- 如何获取结构体成员的地址
- 结构化绑定,无需复制即可获取子向量的连续元素
- 在通过 P/Invoke 获取的 C++ 结构上设置 C# 回调
- 获取指向映射内结构的指针
- 从行分析中获取结构
- 在模板实例化期间获取原始结构/类名C++
- 如何从 GIFLIB 保存图像结构中获取 RGB 颜色数据
- 获取结构的 UUID
- 如何直接从 FILETIME 结构获取/设置和获取秒数
- 从知道其结构类型的实例中获取值
- 如何使用结构C++获取从函数中生成的最大值
- 从接口层次结构获取接口