Pointeur de pointeur/ Référence sur un pointeur
Bonjour,
Je créé une petite application en C++ pour apprendre et je suis arrivé sur un cas que je ne suis pas sûr de maîtriser.
Dans mon main :
- j'instancie un pointeur Application Application app = new Application(); .
- j'instancie un pointeur Display en passant en paramètre le pointeur app Display display= new Display (app); .
- j'affecte le display à un attribut de la classe Application via un setter app.setDisplay(display); .
Jusqu'ici, aucun problème. Cependant, dans ma classe Application, j'ai un attribut "Manager" qui est instancié dans la liste d'initialisation de mon constructeur Application.
Le problème, c'est que Manager a besoin d'utiliser le Display, et au moment où il est instancié (la liste d'initialisation de mon constructeur Application), le pointeur display est NULL (ce qui est normal à ce moment là).
Code:
1 2 3 4
| Application::Application() : manager()
{
this->display = NULL;
} |
Est-ce qu'il est possible (et surtout, est-ce la bonne solution) de passer un pointeur de pointeur/une référence sur un pointeur ou un truc dans le genre afin que le Manager puisse utiliser le Display affecté à Application, même après un changement de valeur ?
Je pourrais faire en sorte que le setDisplay de Application appelle un setDisplay dans le Manager, mais ce serait lourd car j'ai potentiellement plusieurs Managers (qui eux aussi auront d'autres Managers ^^).
De même, est-ce qu'il est possible d'empêcher le Manager de modifier l'adresse du pointeur ? C'est à dire :
>>> le manager doit pouvoir utiliser complètement le display et toutes ses méthodes sans restrictions, y compris des méthodes qui modifient des valeurs/attributs de la classe Display, etc.
>>> la seule chose qu'il ne doit pas pouvoir faire c'est de modifier l'adresse sur laquelle pointe le pointeur (je ne sais pas si je m'exprime bien, mais en gros, il ne faut pas pouvoir faire un truc du genre display = new Display() dans le manager).
Merci d'avance :)