Я возвращаюсь к c ++ через 20 лет, но язык, похоже, сильно изменился. Я не могу заставить это бежать. Я чувствую себя студентом.
Это упражнение дерева AVL. Код avl был только что загружен (не мой).
// AVL.H
#include <iostream>
template <class Comparable>
class AvlTree
{
public:
explicit AvlTree( const Comparable & notFound );
AvlTree( const AvlTree & rhs );
~AvlTree( );
// other functions ...
const AvlTree & operator=( const AvlTree & rhs );
private:
AvlNode<Comparable> *root;
const Comparable ITEM_NOT_FOUND;
....etc
};
AVL.CPP
#include "avl.h" // and other system includes
template <class Comparable>
AvlTree<Comparable>::AvlTree( const Comparable & notFound ) :
ITEM_NOT_FOUND( notFound ), root( NULL )
{
}
/**
* Copy constructor.
*/
template <class Comparable>
AvlTree<Comparable>::AvlTree( const AvlTree<Comparable> & rhs ) :
ITEM_NOT_FOUND( rhs.ITEM_NOT_FOUND ), root( NULL )
{
*this = rhs;
}
/**
* Destructor for the tree.
*/
template <class Comparable>
AvlTree<Comparable>::~AvlTree( )
{
makeEmpty( );
}
.... other functions like insert, remove, makeEmpty etc
Программа вызова (моя)
#include <iostream> ...other includes
#include "avl.h"
class Student
{
int id;
string fname, lname, level;
public:
Student::Student(int idx, string fnamex, string lnamex, string levelx) {
id=idx;
...etc
}
Student::Student(const Student & rhs) {
id = rhs.id;
... etc
}
bool operator< (const Student & rhs ) const
{ return id < rhs.id; }
bool operator== (const Student & rhs ) const
{ return id == rhs.id; }
Student operator= ( const Student & rhs ) {
id = rhs.id;
...etc
}
};
int main()
{
Student notFound(-1,"","","");
AvlTree<Student> myTree(notFound);
system("PAUSE");
return 0;
}
При сборке в Visual Studio 2008 появляются следующие ошибки.
Error 1 error LNK2019: unresolved external symbol
"public: __thiscall AvlTree<class Student>::~AvlTree<class Student>(void)" (??1?$AvlTree@VStudent@@@@QAE@XZ) referenced in function _main main.obj AVLTree
Error 2 error LNK2019: unresolved external symbol
"public: __thiscall AvlTree<class Student>::AvlTree<class Student>(class Student const &)" (??0?$AvlTree@VStudent@@@@QAE@ABVStudent@@@Z) referenced in function _main main.obj AVLTree
Error 3 fatal error LNK1120: 2 unresolved externals .....
Похоже, это говорит о том, что деструктор и конструктор копирования не определены. Но я вижу, что определены в AVL.CPP.
Пожалуйста, помогите. Я теряю самооценку.