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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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