[C/C++] Créer une référence NULL (comme un pointeur NULL)

Le côté programmation du développement d'un jeu vidéo.

Créer une référence NULL (comme un pointeur NULL)

Messagepar Benos » 10 Juin 2008, 11:05

Hello,

Je me suis rendu compte récemment que les références (que je n'utilisais jamais) ne peuvent pas prendre (à l'inverse des pointeurs) la valeur NULL. Ce qui n'est pas trés pratique car on ne peut pas "flagger", exemple (un peu nul cet exemple sans mauvais jeu de mots....):

Code: Tout sélectionner
class Humain
{

Velo * velo;
....
void deplace();
}

void Humain::deplace()
{

if(velo==NULL) //si on a pas assigné de velo à l'humain -> le mec a pas de velo donc il se deplace à pied
}


Le pointeur permet donc de pointer sur l'objet et de savoir si humain a un velo ou pas gràce au test. On n'aurait pas pu faire cela si velo avait été une référence, ma question est donc y a t'il un moyen élégant de simuler çe test avec une référence?
Benos
Hello World, I'm new !
 
Messages: 271
Inscription: 20 Oct 2005, 14:22

Messagepar Mokona » 10 Juin 2008, 11:40

Un des principes de la référence en C++ est que justement, celle-ci ne peut pas être nulle.

Ainsi, si ton Humain a une référence vers un vélo, cela signifie qu'il a un vélo. L'association est de type unaire et non [0,1] (voire [0,n]).

Du coup, une manière élégante pour représenter quelque chose qui est contraire à la sémantique, ça ne me semble pas évident.

Tu peux éventuellement avoir un objet de type Vélo représentant l'absence de vélo... je te laisse juger de l'élégance de la chose.

Ou bien, un flag quelconque en sus.

La question que je te retourne est : pourquoi vouloir utiliser un référence lorsque ce que tu cherches à exprimer s'exprime particulièrement bien avoir un pointeur ?
Mokona
Hello World, I'm new !
 
Messages: 1686
Inscription: 13 Mar 2005, 13:00

Messagepar Benos » 10 Juin 2008, 12:13

Ainsi, si ton Humain a une référence vers un vélo, cela signifie qu'il a un vélo. L'association est de type unaire et non [0,1] (voire [0,n]).


Effectivement j'avais pas pensé à ça.

Tu peux éventuellement avoir un objet de type Vélo représentant l'absence de vélo... je te laisse juger de l'élégance de la chose.


Pour la déconne je vais essayer d'écrire un truc dans le genre, en déclarant cet objet NULL comme une reference static de la classe.

Ou bien, un flag quelconque en sus.


c'est de la triche!

pourquoi vouloir utiliser un référence lorsque ce que tu cherches à exprimer s'exprime particulièrement bien avoir un pointeur ?


les references c'est un peu plus simple à écrire, mais c'est surtout par curiosité.
Benos
Hello World, I'm new !
 
Messages: 271
Inscription: 20 Oct 2005, 14:22


Retourner vers Programmation

Qui est en ligne

Utilisateurs parcourant ce forum: Google [Bot] et 6 invités

cron