3

我在 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

错误一:

**redblacktreeopengl.hpp(27) : error C2039: '{ctor}' : is not a member of 'RedBlackTree' with [ K=double, D=std::string ] **

错误2:

main.cpp(50) : 请参阅正在编译的类模板实例化“RedBlackTreeOGL”的参考

4

4 回答 4

8

该代码试图继承一个构造函数,而不是一个类:-)

类声明的开始应该是

template <class K, class D>
class RedBlackTreeOGL : public RedBlackTree<K, D>
于 2008-12-08T09:14:04.017 回答
2

我的天啊,我觉得好傻.....看我自己的代码太久了!

那是一件非常基本的事情,我不知道我是怎么错过的!

谢谢詹姆斯(和 SDX2000),这是通过将声明末尾的“构造函数”从詹姆斯所说的内容中取出来实现的。

谢谢 :)

于 2008-12-08T09:23:33.717 回答
1

RedBlackTree<K, D>::RedBlackTree有默认构造函数吗?如果您有其他参数化构造函数(ctors),C++ 本身不会定义默认构造函数。

于 2008-12-08T09:02:16.100 回答
0

@SDX2000:

是的,我在 RedBlackTree::RedBlackTree 中定义了一个构造函数:

template <class K, class D>
class RedBlackTree
    {
    public:
        RedBlackTree();
        // Deleting a storage object clears all remaining nodes
        ~RedBlackTree();

我还为 RedBlackTree 类的构造函数和析构函数实现了一个主体

于 2008-12-08T09:10:07.317 回答