Как решить: «ошибка C2039:« {ctor} »: не является членом» в Visual Studio 2005? - PullRequest
3 голосов
/ 08 декабря 2008

Я расширяю шаблонный класс, используя C ++ в Visual Studio 2005. Это выдает ошибку, когда я пытаюсь расширить базовый класс шаблона:

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» с [ К = двойной, D = станд :: строка ] **

Ошибка 2:

main.cpp (50): см. Ссылку на экземпляр шаблона класса 'RedBlackTreeOGL', который компилируется

Ответы [ 4 ]

8 голосов
/ 08 декабря 2008

Код пытается наследовать конструктор, а не класс: -)

Начало объявления класса должно быть

template <class K, class D>
class RedBlackTreeOGL : public RedBlackTree<K, D>
2 голосов
/ 08 декабря 2008

О боже, я чувствую себя так глупо ... слишком долго смотрю на свой код!

Это довольно простая вещь, и я не знаю, как мне ее не хватало!

Спасибо, Джеймс (и SDX2000), это сработало, сняв «конструктор» с конца объявления до того, что сказал Джеймс.

Спасибо:)

1 голос
/ 08 декабря 2008

Имеет ли RedBlackTree<K, D>::RedBlackTree конструктор по умолчанию? C ++ не определяет конструктор по умолчанию самостоятельно, если у вас есть другие параметризованные конструкторы (ctors).

0 голосов
/ 08 декабря 2008

@ SDX2000:

Да, я определил конструктор в RedBlackTree :: RedBlackTree:

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

Я также реализовал тело для конструктора и деструктора для класса RedBlackTree

...