我在Visual Studio 2005中使用C ++扩展模板类。 当我尝试使用:
扩展模板基类时,它给了我一个错误template <class K, class D>
class RedBlackTreeOGL : public RedBlackTree<K, D>::RedBlackTree // Error 1
{
public:
RedBlackTreeOGL();
~RedBlackTreeOGL();
当我尝试实例化对象时出现第二个错误:
RedBlackTreeOGL<double, std::string> *tree = new RedBlackTreeOGL<double, std::string>; // error 2
错误1:
** redblacktreeopengl.hpp(27):错误C2039:'{ctor}':不是'RedBlackTree'的成员 同 [ K =双, d =的std :: string ] **
错误2:
main.cpp(50):参见正在编译的类模板实例化'RedBlackTreeOGL'的引用
答案 0 :(得分:8)
代码试图继承构造函数,而不是类: - )
类声明的开头应该是
template <class K, class D>
class RedBlackTreeOGL : public RedBlackTree<K, D>
答案 1 :(得分:2)
这是一个非常基本的东西,我不知道我是如何错过它的!
谢谢詹姆斯(和SDX2000)这项工作是通过将声明结束时的“构造函数”归结为詹姆斯所说的。
谢谢:)
答案 2 :(得分:1)
RedBlackTree<K, D>::RedBlackTree
是否有默认构造函数?如果你有其他参数化构造函数(ctors),C ++本身并不定义默认构造函数。
答案 3 :(得分:0)
<强> @ SDX2000:强>
是的,我在RedBlackTree :: RedBlackTree中定义了一个构造函数:
template <class K, class D>
class RedBlackTree
{
public:
RedBlackTree();
// Deleting a storage object clears all remaining nodes
~RedBlackTree();
我还为RedBlackTree类的构造函数和析构函数实现了一个体