LINUX.ORG.RU

ошибка: ‘AFSObject’ является недостижимой базой ‘AFSTestQuad’[why?]


0

1

Нужна, помощь в понимании ошибки, изучаю с++ на практике.
Вот часть кода:

typedef std::vector<AFSObject*> AFSObjects;
int AFSProc::InitSys()
{
    objects = new AFSObjects;
    objects->push_back(new AFSTestQuad); //Здесь эту ошибку выбивает
    return 0;
}

class AFSProc : AFSSystem {
public:

    AFSProc() : manager(0) {
    }
    virtual ~AFSProc();
    int InitSys();
private:
    int manager;
    AFSObjects *objects;

};
class AFSTestQuad : AFSObject {
public:
    AFSTestQuad(float x = 0, float y = 0, float a = 5);

    int Draw();
private:
    int side;
};
AFSTestQuad::AFSTestQuad(float x, float y, float a) {
    axis->x = x;
    axis->y = y;
    side = a;

}

int AFSTestQuad::Draw() {
    try {
        glRectf(static_cast<GLfloat> (axis->x), static_cast<GLfloat> (axis->y),
                static_cast<GLfloat> (axis->x + side),
                static_cast<GLfloat> (axis->y + side));
    } catch (...) {
        return -1;
    }
    return 0;
}

И наконец тот базовый класс

class AFSObject {
public:

    AFSObject() : axis(new AFSsAxis) {
    }

    virtual ~AFSObject();

    void SetAxis(AFSsAxis* axis);

    AFSsAxis* GetAxis() const;

    virtual int Draw(void) = 0;

protected:
    AFSsAxis *axis;
};
Сильно не ругайте, учился по книжкам, но опыта еще мизерно.
Спасибо за внимание!

★★★★★

тебе нужно public наследование. Замени «class AFSTestQuad : AFSObject» на «class AFSTestQuad : public AFSObject», а лучше везде так поменяй

s0L ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.