Sorry, those are public, I forgot to wrote that. Edited the first post. As I said - Making the getB() a pointer and dynamic_cast solved the problem, like -
1 2 3 4
B* getB()
{
return &_derived;
}
And than -
1 2
C* _caller = new C;
B* _derived = dynamic_cast<B*>(_caller->getB());