виртуальный класс в абстрактном классе - PullRequest
1 голос
/ 05 августа 2010

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

У меня есть базовый класс (родительский) A и три других класса (дочерних) BCD в классе 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:
    ....
    };
};

классы BCD такие же, как класс B. Теперь я хотел бы создать экземпляр класса, и он должен автоматически "перенаправить" класс на экземпляр B или CD и т. д.как функции.

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

1 Ответ

2 голосов
/ 05 августа 2010

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...