Bonjour à tous,
Je vous pose aujourd'hui une question qui je pense est assez simple, mais comme je ne sais pas quoi taper sur internet je n'ai rien trouvé à ce sujet.
Imaginons une classe A, contenant un accesseur sur référence constanteJ'initialise un pointeur sur cette classe puis je déclare un
Code : Sélectionner tout - Visualiser dans une fenêtre à part const int& getX()Je détruis le pointeur sur la classe A et évidemment la variable référence n'est plus valide. Mon problème est le suivant : comment détecter que r n'est plus valide sans provoquer un crash du programme ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part const int& variable = a.getX()
Si vous voulez je peux vous expliquer pourquoi je voudrais savoir ça mais je ne le fais pas ici car cela ne me semble pas nécessaire à la résolution du problème.![]()
J'ajoute également que je préfère l'utilisation de pointeurs permettant beaucoup plus de souplesse car il suffit d'unpour savoir si le pointeur est valide.
Code : Sélectionner tout - Visualiser dans une fenêtre à part if(ptr==NULL)
Je poste également un autre problème afin de ne pas trop surcharger le forum même si ce problème n'a pas grand chose à voir avec le précédent.
Je serai assez bref : imaginons une classe template A :
Maintenant imaginons une classe B templatée comportant une fonction template dont le paramètre template pourrait être la classe A avec un paramètre template indéterminé (je sais c'est lourd mais comment expliquer ça autrement
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 template <typename T> class A { //du code }).
Cela donnerait quelque chose comme ça (même si la ça ne compile pas évidemment)
Sachant que l'action à réaliser dans le cas de la spécialisation de B avec le paramètre A<T> pourrait être la même quelque soit T !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 class B { //du code template <typename T, typename U> void faireqqch(T<U> machin); } template <typename T, typename U> void B::faireqqch(T<U> machin) { //faire qqch } template <> void B::faireqqch(A<T> specialisationclasseATemplateEnT) { //faire qqch }
Merci par avance![]()
Partager