Привет :) я хотел бы спросить, если возможно сделать что-то вроде этого:
у меня есть базовый класс (родитель) A и три других класса (childs) B C D в классе A, у меня есть виртуальные функции, это в порядке. но что, если мне нужен виртуальный класс?
class A
{
public:
virtual int func1()=0;
virtual int func2()=0;
virtual class AB; // !!!!???
};
class B
{
public:
int func1();
int func2();
class AB
{
public:
....
};
};
классы B C D являются тем же как класс B. Теперь, я хотел бы создать экземпляр класса, и он должен автоматически "перенаправить" класс к экземпляру B или C D и т.д. как функции.
действительно ли это возможно? я надеюсь, Вы понимаете :) Большое спасибо за ответ.
Это принципиально невозможно. Вызов виртуальной функции определяется во время выполнения программы. Класс изменяет поведение программы во время компиляции. Вы не можете сделать определение во время компиляции во время выполнения, если только время выполнения и время компиляции не совпадают по времени, т.е. при использовании JIT или других динамических генераторов кода. В стандартном C++ это невозможно.
Что вы можете сделать, так это иметь базовый класс AB, с виртуальной функцией, которая создает класс, который гарантированно наследуется от этого базового класса, а затем возвращает указатель на него.