2009-05-03 10 views
3

J'essaie de faire un appel à une méthode de classe Parent à partir d'un objet contenu, mais je n'ai pas de chance avec le code suivant. Quelle est la manière standard de le faire?C++ comment appeler une méthode de classe parente à partir d'une classe contenue?

J'ai cherché autour et cela semble fonctionner pour les objets hérités, mais pas pour les objets contenus. Est-il juste de l'appeler une classe Parent même? Ou est-ce appelé une classe propriétaire?

class Parent{ 
private: 
    Child mychild; 

public: 
    void doSomething(); 
} 

class Child{ 
public: 
    void doOtherThing(); 
} 

void Child::doOtherThing(){ 
    Parent::doSomething(); 
} 

Répondre

10

Un objet contenu n'a aucun accès spécial à la classe qui le contient et ne sait généralement pas qu'il est contenu. Vous devez passer une référence ou un pointeur vers la classe contenant une certaine façon - par exemple:

class Child{ 
public: 
    void doOtherThing(Parent & p); 
}; 

void Child::doOtherThing(Parent & p){ 
    p.doSomething(); 
} 
0

Si l'enfant a besoin d'interagir avec le parent, il aura besoin d'une référence à cet objet; à l'heure actuelle, l'enfant n'a aucune notion de propriétaire.

1

L'enfant n'a aucun lien avec la classe parente. Vous devrez passer 'ceci' à l'enfant (probablement dans les constructeurs) pour que cela fonctionne.

Questions connexes