Вызов нескольких derived classes из массива
От: CoolCmd Россия  
Дата: 17.03.10 13:23
Оценка:
Добрый!
Вопрос нуба. В проге решил из структуры сделать объекты, что бы всё было как у взрослых дядек. Но ничего не получилось. Вот упрощенный вариант:
class A
{
public:
    virtual void VFunc() = 0;
};

class B: public A
{
public:
    void VFunc()
    {
        printf("class B\n");
    }
};

class C: public A
{
public:
    void VFunc()
    {
        printf("class C\n");
    }
};

// здесь можно что-то упростить?
B b = B();
C c = C();

static A *a[] = {&b, &c, 0 /*маркер конца списка*/};
static A *aa[] = {&B(), &C(), 0 /*маркер конца списка*/};
static A aaa[] = {B(), C()};

int _tmain(int argc, _TCHAR* argv[])
{
    // пока работает
    a[0]->VFunc();
    a[1]->VFunc();

    // коварно вылетает
    aa[0]->VFunc();
    aa[1]->VFunc();

    // даже не линкуется
    // в реальной проге линкуется, но идет вызов pure virtual
    aaa[0].VFunc();
    aaa[1].VFunc();

    return 0;
}

Как сделать правильно?
простите, я убил небо
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.