Problème de compilation

Le
Guillaume GOURDIN
Bonjour,

je fais face à un problèlme de compilation que je ne saisis pas. En
effet, le code suivant ne compile pas :

void foo()
{
struct toto
{
int bar1;
int bar2;
}

vector<toto> v
};

alors que le code suivant compile bien :

struct toto
{
int bar1;
int bar2;
}

void foo()
{
vector<toto> v
};

Pourquoi le fait de sortir ma struct de la fonction permet à omn code de
compiler?

Merci pour votre aide.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Jean-Marc Bourguet
Le #18114271
Guillaume GOURDIN
Bonjour,

je fais face à un problèlme de compilation que je ne saisis pas. En effet,
le code suivant ne compile pas :

void foo()
{
struct toto
{
int bar1;
int bar2;
}

vector<toto> v
};

alors que le code suivant compile bien :

struct toto
{
int bar1;
int bar2;
}

void foo()
{
vector<toto> v
};

Pourquoi le fait de sortir ma struct de la fonction permet à omn code de
compiler?



Parce que les parametres templates doivent etre a linkage externe.

--
Jean-Marc
FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ
C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html
Site de usenet-fr: http://www.usenet-fr.news.eu.org
Guillaume GOURDIN
Le #18114261
>> Pourquoi le fait de sortir ma struct de la fonction permet à omn code de
compiler?



Parce que les parametres templates doivent etre a linkage externe.



C'est bien ce que je pensais. En fait, vector ne connait pas la struct
parce qu'elle est locale à la fonction.

Merci pour ta réponse rapide.
Fabien LE LEZ
Le #18114591
On 11 Dec 2008 18:09:47 +0100, Jean-Marc Bourguet
Parce que les parametres templates doivent etre a linkage externe.



D'ailleurs, c'est ce que le message d'erreur aurait dû indiquer.
Guillaume GOURDIN
Le #18122931
>> Parce que les parametres templates doivent etre a linkage externe.



D'ailleurs, c'est ce que le message d'erreur aurait dû indiquer.



Le message d'erreur n'était pas forcément d'une clarté exemplaire (comme
souvent avec les templates semble t'il).
Publicité
Poster une réponse
Anonyme