 |
C++Talk.NET C++ language newsgroups
|
| View previous topic :: View next topic |
| Author |
Message |
Gilles Guest
|
Posted: Thu Aug 18, 2005 10:48 am Post subject: variable statique dans une fonction inline d'une classe temp |
|
|
Bonjour,
Quelqu'un peut-il m'expliquer le warning que j'obtiens dans le code
ci-dessous ?
Merci d'avance,
Gilles.
template <typename A, typename B>
class C
{
public:
class H
{
public:
H()
{
static bool init = true;
// WARNING: sorry: semantics of inline function static data `bool init' are
// wrong (you'll wind up with multiple copies)
// you can work around this by removing the initializer
if (init)
i = 0;
init = false;
}
int i;
};
static H& GetH()
{
static H s_h;
return s_h;
}
};
|
|
| Back to top |
|
 |
Arnaud Meurgues Guest
|
Posted: Thu Aug 18, 2005 1:28 pm Post subject: Re: variable statique dans une fonction inline d'une classe |
|
|
Gilles wrote:
| Quote: | Quelqu'un peut-il m'expliquer le warning que j'obtiens dans le code
ci-dessous ?
|
Je ne suis pas sûr, mais ne veut-il pas dire que la statique ne sera pas
partagée par toutes les instances du template ?
Bon, le message n'est pas clair, mais ce pourrait être ça ?
--
Arnaud
|
|
| Back to top |
|
 |
kanze@gabi-soft.fr Guest
|
Posted: Tue Aug 23, 2005 8:18 am Post subject: Re: variable statique dans une fonction inline d'une classe |
|
|
Arnaud Meurgues wrote:
| Quote: | Gilles wrote:
Quelqu'un peut-il m'expliquer le warning que j'obtiens dans
le code ci-dessous ?
Je ne suis pas sûr, mais ne veut-il pas dire que la statique
ne sera pas partagée par toutes les instances du template ?
|
S'agit-il d'un ancien compilateur ? La norme exige qu'il n'y a
qu'une seule instance de la variable pour chaque instantiation
du template, mais avant la norme, la plupart des compilateurs en
créaient une instance par unité de traduction où la fonction
servait.
Si c'est le cas, la solution évidente, c'est une mise à jour du
compilateur. Faute de quoi, on pourrait toujours essayer un
static membre de la classe.
| Quote: | Bon, le message n'est pas clair, mais ce pourrait être ça ?
|
C'est possible aussi. Quelque petits essais avec un static int
qu'on incrémente doit suffire pour déterminer le comportement
exacte du compilateur. Mais a priori, il n'y a rien de faux dans
son code, et je ne m'attendrais pas à un avertissement d'un
compilateur moderne.
Il pourrait aussi essayer la même chose sans le template, juste
pour voir. Mais je serais surtout intéressé à savoir la version
du compilateur.
--
James Kanze GABI Software
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
|
|
| Back to top |
|
 |
Gilles Guest
|
Posted: Tue Aug 23, 2005 9:08 am Post subject: Re: variable statique dans une fonction inline d'une classe |
|
|
| Si c'est le cas, la solution évidente, c'est une mise à jour du
| Quote: | compilateur. Faute de quoi, on pourrait toujours essayer un
static membre de la classe.
|
Je ne peux pas obliger mon client à changer de compilateur, je retiens donc
la deuxième option.
| Quote: | Mais je serais surtout intéressé à savoir la version
du compilateur.
|
ProDG for PlayStation2 (de SN Systems), dernière version.
Pour info, je compile mon code sans aucun problème avec une bonne dizaine de
compilateurs. Le problème semble bien venir de ProDG.
Merci pour les infos.
Gilles.
|
|
| Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|