我使用C++創建了一個遊戲,所有對象類都來自一個基類Instance
,並且它們都被列入vector
。我必須能夠從向量中的指針訪問變量和函數。這裏是我的代碼,用於激活每個實例的每次更新方法:C++多態類變量和函數
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;
}
}
球不是從實例 – Emilcasvi
你並不需要在球聲明變量,如果球從實例繼承繼承。儘管如此,您應該將類Ball聲明爲實例的派生類,在它的類聲明中,IE類Ball:public Instance。 – Egg
您可能希望更新也是純虛擬的。 'virtual void update()= 0;' – apartridge