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