Итак, я работаю через класс структур данных C ++ в моем университете, и как часть руководства по стилю, все функции-члены класса, длина которых превышает 10 строк кода, должны быть определены вне класса.
В настоящее время мы строим дерево двоичного поиска, и я столкнулся с ситуацией, когда мне нужно определить функцию вне класса, потому что она слишком длинная. Вот его общая форма с соответствующей информацией:
Определение текущего класса
template<typename T>
class BST {
private:
struct Node {
T data;
Node* rightChild;
Node* leftChild;
}
Node* searchNode(Node* node, const T& data) const {
//Function definition, somewhat long
}
public:
//Other member functions
}
Так что я хотел бы объявить эту функцию только в объявлении класса а затем определите его в другом месте в отдельном cpp файле, например:
Предложенная часть BST.h
template<typename T>
class BST {
private:
struct Node {
T data;
Node* rightChild;
Node* leftChild;
}
Node* searchNode(Node*, const T&) const;
public:
//Other member functions
}
Предложенная BST. cpp Часть
#include "BST.h"
template<typename T>
Node* BST<T>::searchNode(Node* node, const T& data) const {
//Function Declaration, somewhat long
}
Однако мой компилятор больше не распознает тип Node, потому что я сейчас вне своего класса. Есть ли способ обойти это приятно? Или мне просто придется жить с этим, определенным в объявлении моего класса?
Спасибо за ваше время!