виртуальный класс в абстрактном классе

Привет :) я хотел бы спросить, если возможно сделать что-то вроде этого:

у меня есть базовый класс (родитель) 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 и т.д. как функции.

действительно ли это возможно? я надеюсь, Вы понимаете :) Большое спасибо за ответ.

1
задан wh1sp3r 5 August 2010 в 15:02
поделиться

1 ответ

Это принципиально невозможно. Вызов виртуальной функции определяется во время выполнения программы. Класс изменяет поведение программы во время компиляции. Вы не можете сделать определение во время компиляции во время выполнения, если только время выполнения и время компиляции не совпадают по времени, т.е. при использовании JIT или других динамических генераторов кода. В стандартном C++ это невозможно.

Что вы можете сделать, так это иметь базовый класс AB, с виртуальной функцией, которая создает класс, который гарантированно наследуется от этого базового класса, а затем возвращает указатель на него.

2
ответ дан 2 September 2019 в 22:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: