problème polymorphisme (je crois) et héritage
Bonjour, je suis en train de développer un genre de sim city simplifié.
classes: energy->building, RCI->building
Pour stocker les batiments, j'ai créé un vector de vector qui contiennent des références de buildings pour que puisse mettre la classe energy ou RCI dans le meme tableau.
Je peux utiliser les fonctions de building mais pas les fonctions de Energy quand j'insere un Energy dans le vector... Comment puis-je faire pour que l'objet de la classe energy soit considérée comme un energy?
Merci d'avance pour vos réponses !
Main.cpp
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
|
std::vector<building*> batiments[17];
void listBatiments();
int main()
{
listBatiments();
return 0;
}
void listBatiments(){
batiments[0].push_back(new Energy(Energy::power));
batiments[0][0]->setAllProperties(6000, 150, 3,3, "Coal power plant", 17);
batiments[0][0]->setState(building::isHud);
/**
batiments[0][0]->setEnergyDelivered(1000);
ça ne marche pas
error: 'class building' has no member named 'setEnergyDelivered'|
**/
} |
energy.h
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
|
#ifndef ENERGY_H
#define ENERGY_H
#include <building.h>
class Energy : public building
{
public:
enum energyType{water,power,garbage};
Energy(energyType energy);
~Energy();
void setEnergyDelivered(int energyDelivered);
int getEnergyDelivered();
private:
energyType m_energyType;
int m_energyDelivered;
};
#endif // ENERGY_H |