2010-08-05 5 views
1

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

У меня есть базовый класс (родительский) А и три других классов (Чайлдс) BCD в классе А , у меня есть виртуальные функции, это нормально. , но что, если мне нужен виртуальный класс?

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 и т.д., как функция.

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

+0

Дайте нам более подробную информацию о том, что вы пытаетесь сделать с классом AB. –

+0

Можете ли вы привести пример того, что вы хотите здесь сделать? Виртуальные классы не существуют в том, как вы их описываете, но шаблоны или другие трюки могут помочь, но я не могу сказать больше, если вы не уточните свою цель более точно. –

ответ

2

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

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

+0

Вот почему, почему нет информации о «виртуальном классе» :) спасибо за ответ – wh1sp3r

Смежные вопросы