C ++多态类变量和函数

时间:2013-07-12 02:23:03

标签: c++ vector polymorphism

我正在用C ++创建一个游戏,所有对象类都来自一个基类Instance,它们都列在vector中。我必须能够从向量中的指针访问变量和函数。这是我激活每个实例的每个更新方法的代码:

for (double j = 1000; j >= -1000; j -= 1) {
    for (int i = 0; i < instances.size(); i += 1) {
        if (instances[i]->depth == j) {
            instances[i]->update();
        }
    }
}

我可以访问这些函数并执行它们,各个实例可以访问它们自己的函数,但我无法通过instances[i]->whatevervariable访问实例,它似乎从基类中获取变量的值。使用dynamic_casts无济于事,因为我试图让游戏变得非常灵活。那么如何设置

std::vector<Instances*> instances;

所以它允许我通过instances[i]->

访问变量和函数

类:

class Instance {
    public:
    double x;
    double y;
    double depth;

    virtual void update() { };
};
class Ball : public Instance {
    public:
    double x;
    double y;
    double depth;

    void update() {
        x += 1;
    }
}

1 个答案:

答案 0 :(得分:0)

Redeclare Ball如下

class Ball : public Instance {
    public:
    void update() {
        x += 1;
    }
}

通过放置“:public Instance”,您将Ball作为Instance的派生类并具有相同的public或protected属性,它将具有深度,x和y,而不会明确声明它们。

http://www.learncpp.com/cpp-tutorial/112-basic-inheritance-in-c/