OVH Cloud OVH Cloud

list de reference

1 réponse
Avatar
Jeremie Fouche
Bonjour a tous

Je souhaiterai comprendre pourquoi le code suivant ne compile pas.

#include <list>

class A
{
public:
A() {}
~A() {}

public:
int m_i;
};

typedef list<A&> listRefA;
typedef listRefA::iterator iterListRefA;

Le message d'erreur m'indique que la definition du type iterListRefA est
interdite. C'est a dire, si j'ai bien regardé le source de <list> que la
definition du type A&* est interdite. Pourtant, la definition d'une liste de
reference sur un objet est authorisée. Quelques explications ?
Merci

--
Jérémie

1 réponse

Avatar
Fabien LE LEZ
On Mon, 16 Aug 2004 16:22:41 +0200, "Jeremie Fouche"
:

typedef list<A&> listRefA;


On ne peut pas stocker une référence dans un conteneur.
En fait, alors qu'un pointeur est un objet en lui-même, une référence
n'a pas d'existence en elle-même, elle n'est qu'un alias pour une
variable. En particulier, on ne peut pas la copier, et une référence
ne peut pas être paramètre de template.

--
;-)