derived templates doesn't link in Visual C++ 6.0
Привет!
Подскажите, где проблема, pls. Замаялся уже искать. Или может VC++ 6.0 глючит?
=== a.h ===
[vc]
class Event : public CObject {
DECLARE_DYNAMIC( Event );
public:
Event();
virtual ~Event();
};
class Actor {
public:
Actor();
~Actor();
};
template <class T, class C>
class ActorThread : public Actor {
public:
ActorThread();
~ActorThread();
private:
CWinThread* m_thread;
};
[/vc]
=== a.cpp ===
[vc]
#include "a.h"
IMPLEMENT_DYNAMIC( Event, CObject );
template <class T, class C>
ActorThread<T,C>::ActorThread() {
m_thread = AfxBeginThread( RUNTIME_CLASS( T ) );
}
template <class T, class C>
ActorThread<T,C>::~ActorThread() {
m_thread->PostThreadMessage( WM_QUIT );
}
[/vc]
=== b.cpp ===
[vc]
#include "a.h"
ActorThread<MyThread,MyEvent> actor;
[/vc]
При линковке выдается ошибка LNK2001:
b.obj : error LNK2001: unresolved external symbol "public: __thiscall ActorThread<class MyThread,class MyEvent>::~ActorThread<class MyThread,class MyEvent>(void)" (??1?$ActorThread@VMyThread@@VMyEvent@@@@QAE@XZ)
b.obj : error LNK2001: unresolved external symbol "public: __thiscall ActorThread<class MyThread,class MyEvent>::ActorThread<class MyThread,class MyEvent>(void)" (??1?$ActorThread@VMyThread@@VMyEvent@@@@QAE@XZ)
Классы: MyThread : CWinThread и MyEvent : Event есть в других файлах. Они не важны, т.к. ошибка выдаётся на что угодно в качестве параметра темплейта, даже на <CWinThread,CObject>...
Заранее спасибо.
Пока на собственное сообщение не было ответов, его можно удалить.
Удалить