rss
Rechercher : dans
Par : Pertinence Date Nom d'utilisateur
Statut : Résolu

[C++] Accès à une classe fille

peter1789, le vendredi 6 avril 2007 à 18:08:41
Bonjour à tous,
J'aimerais savoir comment, en C++, accéder à une classe fille à partir d'une classe de base.
Merci d'avance ! peter1789 :o)
Configuration: Windows XP
Firefox 2.0.0.3
Répondre à peter1789  Signaler ce message aux modérateurs Aller au dernier message

1


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
mamiemando, le vendredi 6 avril 2007 à 21:53:38
Ca n'a pas de sens. Que veux tu faire ?

Bonne chance
Répondre à mamiemando

2


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
peter1789, le samedi 7 avril 2007 à 11:08:00
Bonjour mamiemando,
Pour répondre à ta question, je voudrais créer avec SDL une arborescence d'objets similaire à ce que l'on trouve en javascript. Voici mon code source en très simplifié :
class Calque { // une surface SDL améliorée
	protected:
	// ici les attributs
	public:
	Calque(int hauteur, int largeur);
	~Calque();
	int ajouterEnfant(Calque* enfant) {	// ajouter un enfant au calque
		// modification des attributs du futur calque enfant
	}
};

class Image : protected Calque { // une image
	protected:
	// attributs
	public:
	Image(char* nomImage);
};
Calque calque(50,50); // création d'un calque 50*50
Image image("photo.bmp"); // création d'une image à partir du fichier "photo.bmp"
calque.ajouterEnfant(&image); // Ai-je le droit d'éxécuter cette instruction sachant que je modifierais les attributs d'une image à partir d'un calque, même si je donne une image à l'argument de type calque ?

Voilà, merci d'avance
--
peter1789 :o)
Répondre à peter1789

3


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
kilian, le samedi 7 avril 2007 à 16:16:49
Si tu dois modifier les attributs propres à une image à partir d'un calque, alors autant faire une méthode comme
int ajouterEnfant(Image* enfant)

Mais si tu dois accéder à un attribut de l'image qui est hérité d'un calque, alors ça ne pose pas de problème.
..et le...le...enfin, non parce c'est...ya...quand...bah tu sais là le...
Répondre à kilian

4


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
 mamiemando, le samedi 7 avril 2007 à 20:22:41
Yep mais c'est bizarre comme manière de faire. Enfin globalement vu qu'un image est un cas particulier de calque dans ta structure de classe, toute fonction qui attend un calque peut utiliser une image. Plutôt que de passer par des pointeurs moi je te conseille d'utiliser des références, c'est plus la classe : ca donne un code plus lisible et tu bénificies des avantages des pointeurs (pas de recopies inutiles, possibilité de modifier le paramètre pointé par la référence etc...)

Exemple :
struct A{
  int plop;
  A(int a0=0):a(a0){}
};

int f(A & a){
  a.plop = 2;
}

Ensuite je ne sais pas trop ce que tu entends par "ajouter un enfant" mais si ca consiste à rajouter un objet dans un container, je t'invite à utiliser tout simplement des conteneurs de la STL, par exemple un std::map.

Pour conclure, tu peux utiliser sur une classe fille les méthodes protected et public de la classe mère (si c'est un héritage public) mais ce n'est pas le cas dans un héritage protected...

Enfin si tu as besoin d'utiliser des méthodes de la classe fille sur un objet de type mère (mais qui est en réalité une instance fille), tu disposes d'outils tels que le dynamic_cast ou le static_cast... à utiliser avec modération.
Répondre à mamiemando
Logiciels pertinents trouvés dans les téléchargements
Télécharger Media Player Classic 6.4.9.0Media Player Classic - Media Player Classic est un lecteur vidéo reprenant l'apparence des premières version de Windows Media Player. Son apparence...Catégorie: Lecteurs vidéo
Licence: Open Source
Télécharger Control Kids 6.0Control Kids - Logiciel de contrôle parental qui filtre tous les sites Internet à contenu pornographique ou violent, bloque les...Catégorie: Contrôle parental
Licence: Freeware/gratuit
Télécharger SSH Secure Shell 3.0 build 203SSH Secure Shell - SSH secure shell for workstations est un client SSH flexible permettant de se connecter de façon sécurisée à des...Catégorie: Telnet/SSH
Licence: Open Source
Télécharger AxCrypt 1.6.4.4AxCrypt - AxCrypt est un logiciel de chiffrement (encryption) permettant de protéger par mot de passe des fichiers ou des dossiers...Catégorie: Chiffrement
Licence: Open Source
Plus de logiciels gratuits sur « [C++] Accès à une classe fille »