В общем попросили меня вспомнить C++ и написать курсовую работу ... cat btree.h #ifndef _BTREE_H_ #define _BTREE_H_ #include "btreenode.h" template<class T> class BTree { private: BTreeNode<T> *root; bool addNode(BTreeNode<T> *node, const T &value); bool searchNode(BTreeNode<T> *node, const T &value, T &result); public: BTree() {root = 0;}; bool add(const T &value); // bool del(const T &value); bool search(const T &value, T &result); }; #endif cat btree.cpp ... template <class T> bool BTree<T>::add(const T &value) { if (root != 0) return addNode(root, value); root = new BTreeNode<T>(value); return true; }; ... cat main.cpp #include "btreedata.h" #include "btree.h" #include <string> using namespace std; int main(int argc, char *argv[]) { BTree<BTreeData> tree; BTreeData val1(string("test"), string("test")); bool r = tree.add(val1); return 0; }; g++ btree.cpp main.cpp -o btree /tmp/ccy6f1Vm.o: In function `main': main.cpp:(.text+0xd0): undefined reference to `BTree<BTreeData>::add(BTreeData const&)' collect2: выполнение ld завершилось с кодом возврата 1 Расскажите что я делаю не так?