Bonjour alors voilà mon problème :
J'ai une classe Bomb qui dérive de la classe Item :
mon bomb.h :
mon bomb.cpp :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 class Bomb : public Item { public: Bomb(int x, int y, int bomb_type); void Launch(); private: int bomb_type; };
et voici enfin mon item.h :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 Bomb::Bomb(int _x, int _y, int _bomb_type) : Item(_x, _y, 3), bomb_type(_bomb_type) { } void Bomb::Launch() { // some code }
Donc voilà le problème est le suivante, dans mon code, il se trouve que j'ai un vector de vectors qui contiennent des Items, il déclaré comme suit :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 class Item { public: Item(int x, int y, int type); ~Item(); sf::Sprite getSprite(); private: int x, y, type; sf::Image image; sf::Sprite sprite; };
et initialisé ainsi :
Code : Sélectionner tout - Visualiser dans une fenêtre à part std::vector< std::vector<Item*> > map_tableau_sprites;
lorsque je le remplis ensuite avec des Item, pas de soucis, par exemple :
Code : Sélectionner tout - Visualiser dans une fenêtre à part std::fill( map_tableau_sprites.begin(), map_tableau_sprites.end(), std::vector<Item*>(32, NULL));
mais là où j'obtiens une erreur, c'est quand j'inclus dans ce tableau un object de type Bomb et que j'essaie de faire appel à la méthode Launch(), il me dit 'class Item' has no member named 'Launch' lorsque je fais ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 for(i = 0; i <= 31; i++) { for(j = 0; j <= 31; j++) { //si la case est 0, on crée un Item vide. //si la case est à 1 alors on initialise un objet de type indestructible. //si la case est à 2 alors un initialise un objet de type destructible. map_tableau_sprites.at(i).at(j) = new Item(i*25, j*25, map_tableau.at(i).at(j)); } }
(l'erreur est relative à la seconde ligne)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 map_tableau_sprites.at(x).at(y) = new Bomb(x*25, y*25, 0); (*map_tableau_sprites.at(x).at(y)).Launch();
Si vous avez une idée de la marche à suivre pour régler ça je suis preneur, je me suis renseigné du coté des "virtual" ou "friend" mais je ne vois pas trop l'appliquer sans être lourd (aka toucher ma classe Item mais peut-être est-ce nécéssaire)
Partager