Скажем, у меня есть два класса:
class A
{
public:
A* Hello()
{
return this;
}
}
class B:public class A
{
public:
B* World()
{
return this;
}
}
И пусть скажем, что у меня есть экземпляр класса B:
B test;
Если я вызываю test.World()->Hello(), это будет работать нормально.
Но test.Hello()->World() не будет работать, поскольку Hello() возвращает A тип.
Как я могу сделать Hello() вернуть тип B? Я не хочу использовать функцию virtual, так как у нас есть более 20 разных классов, наследующих A.