0

我正在用 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;
    }
}
4

1 回答 1

0

重新声明 Ball 如下

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

通过放置“:public Instance”,您正在使 Ball 成为 Instance 的派生类并具有相同的公共或受保护属性,它将具有深度、x 和 y ,而无需明确声明它们。

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

于 2013-07-12T02:31:58.770 回答