Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Problème de compilation

4 réponses
Avatar
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.

4 réponses

Avatar
Jean-Marc Bourguet
Guillaume GOURDIN writes:

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
Avatar
Guillaume GOURDIN
>> 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.
Avatar
Fabien LE LEZ
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.
Avatar
Guillaume GOURDIN
>> 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).