У меня есть базовый класс MyBase, который содержит чистую виртуальную функцию:
void PrintStartMessage() = 0
Я хочу, чтобы каждый производный класс вызывал его в своем конструкторе
то я поместил его в конструктор базового класса (MyBase
)
class MyBase
{
public:
virtual void PrintStartMessage() =0;
MyBase()
{
PrintStartMessage();
}
};
class Derived:public MyBase
{
public:
void PrintStartMessage(){
}
};
void main()
{
Derived derived;
}
но я получаю ошибку компоновщика.
this is error message :
1>------ Build started: Project: s1, Configuration: Debug Win32 ------
1>Compiling...
1>s1.cpp
1>Linking...
1>s1.obj : error LNK2019: unresolved external symbol "public: virtual void __thiscall MyBase::PrintStartMessage(void)" ([email protected]@@UAEXXZ) referenced in function "public: __thiscall MyBase::MyBase(void)" ([email protected]@[email protected])
1>C:\Users\Shmuelian\Documents\Visual Studio 2008\Projects\s1\Debug\s1.exe : fatal error LNK1120: 1 unresolved externals
1>s1 - 2 error(s), 0 warning(s)
Я хочу заставить все производные классы...
A- implement it
B- call it in their constructor
Как я должен это делать?