hi,
i am trying to derive new classes from a template base class. I simplified my code as below just to
show the problem.
template<class T>
class BaseClass
{
public:
BaseClass(T&);
private:
};
//.cpp implementation
template<class T>
BaseClass<T>::BaseClass<T>(T& iT)
{
}
template<class T>
class BaseClass
{
public:
BaseClass(T&);
private:
};
//.cpp implementation
template<class T>
BaseClass<T>::BaseClass<T>(T& iT)
{
}
To copy to clipboard, switch view to plain text mode
and my derived class as:
class DerivedClass : public BaseClass<QString>
{
public:
~DerivedClass();
private:
};
//.cpp implementation
DerivedClass
::DerivedClass(QString st
): BaseClass<QString>(st)
{
}
DerivedClass::~DerivedClass()
{
}
class DerivedClass : public BaseClass<QString>
{
public:
DerivedClass(QString);
~DerivedClass();
private:
};
//.cpp implementation
DerivedClass::DerivedClass(QString st)
: BaseClass<QString>(st)
{
}
DerivedClass::~DerivedClass()
{
}
To copy to clipboard, switch view to plain text mode
when i try to compile this code it gives link errors as below
DerivedClass.obj : error LNK2019: unresolved external symbol "public: __thiscall BaseClass<class QString>::BaseClass<class QString>(QString&)" (??0?$BaseClass@VQString@@@@QAE@XZ) referenced in function "public: __thiscall DerivedClass:
erivedClass(QString)" (??0DerivedClass@@QAE@XZ)
it doesn't generate any error when i do not implement any constructor in the base class. and do not call the base constructor, but i want to implement some code in the base class' constructor.
so, what is the problem with this?
thanks
Bookmarks