我正在用C++创建一个游戏,所有对象类都来自一个基类Instance,并且它们都列在一个vector中。我必须能够从向量中的指针访问变量和函数。下面是激活每个实例的每个update方法的代码:
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;
}
}发布于 2013-07-12 10:31:59
重新声明Ball,如下所示
class Ball : public Instance {
public:
void update() {
x += 1;
}
}通过设置":public Instance“,您可以使Ball成为实例的派生类,并具有相同的公共或受保护属性,它将具有深度、x和y属性,而无需显式声明它们。
http://www.learncpp.com/cpp-tutorial/112-basic-inheritance-in-c/
https://stackoverflow.com/questions/17606547
复制相似问题