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