使用模板创建一个结构,该模板获取其他结构的指针

Create a struct with template which get pointers of others struct

本文关键字:结构 获取 指针 其他 创建 一个      更新时间:2023-10-16

我想创建一个平衡的树。它适用于自定义结构,因此我想通过使用模板创建包含任何类型的树来改进我的平衡树。还有我的问题:

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;