我如何解决:“错误C2039:'{ctor}':不是”在Visual Studio 2005中的成员?

时间:2008-12-08 08:59:30

标签: c++ visual-studio-2005 templates class-design visual-c++-2005

我在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'的引用

4 个答案:

答案 0 :(得分:8)

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

类声明的开头应该是

template <class K, class D>
class RedBlackTreeOGL : public RedBlackTree<K, D>

答案 1 :(得分:2)

OMG,我觉得太傻了......看了我自己的代码已经太久了!

这是一个非常基本的东西,我不知道我是如何错过它的!

谢谢詹姆斯(和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类的构造函数和析构函数实现了一个体