Fonction + Ajout dans la fonction d'une classe hérité

Résolu
cs_christophedlr Messages postés 262 Date d'inscription samedi 3 janvier 2004 Statut Membre Dernière intervention 26 juillet 2022 - 13 janv. 2009 à 16:33
cs_christophedlr Messages postés 262 Date d'inscription samedi 3 janvier 2004 Statut Membre Dernière intervention 26 juillet 2022 - 13 janv. 2009 à 18:29
Bonjour à tous,

Le titre n'est peut être pas très explicite, je vous explique.
Mettons que nous avons deux classes : A et B.
B hérite de A.

Je voudrais savoir si il est possible de surcharger une fonction de A dans B tous en ne perdant pas ce qui est dans la fonction en question de A.

Par exemple, si la fonction de A, appelons-là Test, affiche un message dans la console.
Est-il possible de pouvoir surcharger cette fonction d'une façon permettant d'afficher le message de la fonction Test de la classe A et en plus afficher un message supplémentaire après dans la surcharge dans la classe B.

Ce serait en fait pour faire un système de plugin pour mon logiciel, permettant sans devoir recopier toute la fonction (pouvant donc inclure des erreurs si une ancienne version du logiciel est utilisé), d'ajouter des fonctions.

Par exemple une fonction affiche le menu Aide dans la barre de menu de mon programme, je voudrais que sans recopier toute la fonction, il soit possible de rajouter une entrée supplémentaire dans ce menu avec un système de plugin (en DLL ou SO pour Linux ;)).

Merci d'avance à ceuix qui pourront m'aider.

2 réponses

lglandeur Messages postés 28 Date d'inscription samedi 11 juin 2005 Statut Membre Dernière intervention 20 janvier 2009
13 janv. 2009 à 17:48
bonjour,
je connait une solution qui consiste à appeler la fonction de la classe A depuis la fonction de la classe B.
un petit exemple si mon explication n'est pas très clair:
<hr size="2" width="100%" />#include

using namespace std;

struct A
{
    void aff() {cout << "coucou A" << endl;};
};

struct B:public A
{
    void aff() {A::aff(); cout << "coucou B" << endl;};
};
int main(void)
{
   
    B toto;
    toto.aff();
    return 0;
}
j'espère avoir pus t'aider.
3
cs_christophedlr Messages postés 262 Date d'inscription samedi 3 janvier 2004 Statut Membre Dernière intervention 26 juillet 2022 4
13 janv. 2009 à 18:29
Merci pour l'information, je savais pas si cela était possible ;)

Problème résolu alors, et merci à toi ;)
0
Rejoignez-nous