Я пытаюсь реализовать левое дерево, используя кучи в качестве базового класса.Ниже приведено содержимое heap.h:
template <class T>
class heap {
public:
virtual void init(T*) = 0;
virtual void insert(T*) = 0;
virtual T delete_min() = 0;
};
Ниже приведено содержимое leftist.cpp:
#include "heap.h"
template <class T>
class leftist_tree : public heap<T> {
private:
T* root;
public:
void init(T* a) {}
void insert(T* a) {}
T delete_min() {T a; return a;}
};
Я передаю другой класс leftist_node в качестве параметра этому классуиспользуя следующее определение:
leftist_tree<leftist_node> mytree;
Я получаю неразрешенную внешнюю ошибку символа LNK 2001 для функций init, insert и delete_min.Что я делаю неправильно?
Редактировать:
Хорошо, пример, который я привел в этот момент, слишком сложен.Я попытался воспроизвести ту же ошибку в меньшем масштабе, чтобы кто-то мог легче идентифицировать проблему.Я создал следующие файлы примеров.
try.cpp
#include "stdafx.h"
#include "myclass.h"
int _tmain(int argc, _TCHAR* argv[])
{
myclass<int> a;
a.hello(3);
return 0;
}
myclass.h
template <class T>
class myclass {
public:
void hello(T);
};
myclass.cpp
#include "myclass.h"
#include <iostream>
using namespace std;
template <class T>
void myclass<T>::hello(T a){
cout<<a<<endl;
system("pause");
}
Я получаю похожее сообщение об ошибке:
1> try.obj: ошибка LNK2001: неразрешенный внешний символ "public: void __thiscall myclass :: hello (int)" (? Hello @? $ Myclass @ H @@ QAEXH@Z) 1> c: \ users \ meher anand \ Documents \ visual studio 2010 \ Projects \ try \ Debug \ try.exe: фатальная ошибка LNK1120: 1 неразрешенная внешняя оболочка
Можете ли вы сказать мне, куда я идуне так прямо сейчас?Спасибо