我想创建一个平衡的树。它适用于自定义结构,所以我想通过使用模板来创建包含任何类型的树来改进我的平衡树。还有我的问题:
template <typename T>
struct Branch {
float index;
T value;
Branch *inf = nullptr;
Branch *sup = nullptr;
Branch *parent = nullptr;
};
因为它是一个平衡树,所以每个分支都有索引,并且有一个指向其父分支的指针,以及指向它们的两个子分支的指针。 但是我无法编译这段代码,我得到了一个C2079错误,该错误表明&#34; Branch :: value使用了一个&#39; T&#39;未定义&#34;。 我用的是VS2017RC。
== EDIT ==
我在我的班级树中找到了问题:
template <class T>
class Tree {
public:
/**/
private:
Branch<T>* _origine; //Initialized in constructor Tree() to nullptr
Branch<T> _branches[1000]; //Here is the error
/**/
};
所以问题是这个分支的静态数组,但我不知道如何初始化它......
感谢您的回答!
答案 0 :(得分:1)
我没有看到您的代码有任何问题。我使用g++ -std=c++11
编译它没有任何错误。我用了
int main() { Branch<int> b; }
实例化模板类。
当类只有前向声明或不可见时,MSDN提到错误C2079。见https://msdn.microsoft.com/en-us/library/9ekhdcxs.aspx。这里提到的可能的解决方案是使用指针T和前向声明类型T或包括T的定义。 发布实例化代码肯定会有所帮助。 发布
的代码答案 1 :(得分:0)
您可能缺少模板参数。你应该这样使用:
render() {
var elems = this.props.items.course_list;
console.log(elems.course_list);
return (
<div>
</div>
)
}
}
因此,您可以使用正确的类型访问值
Branch<int> bint;
Branch<float> bfloat;