Внешние функции-члены шаблона класса - PullRequest
1 голос
/ 24 ноября 2011

У меня есть шаблон класса Binary-Tree с несколькими открытыми и закрытыми функциями-членами.Когда функции-члены определены и реализованы внутри шаблона класса, он правильно компилируется и функционирует, как и ожидалось.Однако, когда я перемещаю эти функции за пределы шаблона основного класса, я получаю кратность ошибок.

Есть ли что-то, чего мне здесь не хватает?

template <class type>
class BinaryTree{
private:
    Node<type>* root;
    void internalTraverse(Node<type>* n){}
    ......
public:
    ......
};

template <class type>
void BinaryTree<type>::internalTraverse(Node<type>* n){
    if (n == NULL){
        return;
    }
    internalTraverse(n->left);          //  <- This declaration has no storage type or identifier
    cout << "Node: " << n->data << endl;//  Ditto
    internalTraverse(n->right);         //  Ditto
};
......

Для полного раскрытия: это часть домашнего задания.Тем не менее, это не имеет прямого отношения к цели присвоения - больше касательной проблемы

1 Ответ

3 голосов
/ 24 ноября 2011

Вы определили функцию-член как встроенную, так и вне строки, так что это несколько. Следующие компиляции:

#include <iostream>

template <typename> class Node;

template <class type>
class BinaryTree{
private:
  Node<type>* root;
  void internalTraverse(Node<type>* n);  // <--- no definition!
};

template <class type>
void BinaryTree<type>::internalTraverse(Node<type>* n){
  if (n == NULL){
    return;
  }
  internalTraverse(n->left);identifier
  std::cout << "Node: " << n->data << std::endl;
  internalTraverse(n->right);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...