Тема конечно названа неудачно, надеюсь код просянит ситуацию:
class Base
{
public:
virtual Base* getSelf()
{return this;}
};
class Derived1 : public Base
{
public :
virtual Derived1* getSelf()
{return this;};
};
class Derived2 : public Base
{
public :
virtual Derived2* getSelf()
{return this;};
};
class Tester
{
public:
virtual void Test(Derived1* Value)
{
::MessageBox(NULL, _T("TEST Derived1"),_T("TEST Derived1"), MB_OK);
}
virtual void Test(Derived2* Value)
{
::MessageBox(NULL, _T("TEST Derived2"),_T("TEST Derived2"), MB_OK);
}
};
...
//хочется что бы в точке использования этого хозяйства
Base* pBase1 = new Derived1;
Base* pBase2 = new Derived2;
Tester* pTester = new Tester;
pTester->Test(pBase1->getSelf());// вот здесь хочу вызов правильного Test'a а не ошибку компиляции
Если тема уже поднималась, то просто ткните меня носом в поиск. Спасибо!