| View previous topic :: View next topic |
| Author |
Message |
amerio Guest
|
Posted: Fri Jul 18, 2003 8:05 pm Post subject: template methode |
|
|
Bonjour,
J'essaye d'écrire une classe normale (non template) qui contiendrait une
méthode paramétrable (template) :
class Toto
{
public:
template <class T> T* New() const { return new T; }
};
// en fonction libre...
template <class T> T* New() { return new T; }
void test()
{
Toto t;
int *i;
i = t.New<int>(); // error : type 'int' unexpected
i = New<int>(); // ok
}
Le template en méthode ne compile pas. Est-ce un défaut de mon compilo (VC6)
ou bien est-ce illégal ?
Et comment contourner le pb (si c'est possible...)
|
|
| Back to top |
|
 |
Gabriel Dos Reis Guest
|
Posted: Fri Jul 18, 2003 8:33 pm Post subject: Re: template methode |
|
|
"amerio" <amerio (AT) hotmail (DOT) com> writes:
| Quote: | Le template en méthode ne compile pas. Est-ce un défaut de mon compilo (VC6)
^^^^^ |
Mauvais compilo, changer de compilo.
-- Gaby
|
|
| Back to top |
|
 |
amerio Guest
|
Posted: Fri Jul 18, 2003 9:19 pm Post subject: Re: template methode |
|
|
| Quote: | | Le template en méthode ne compile pas. Est-ce un défaut de mon compilo
(VC6)
^^^^^
Mauvais compilo, changer de compilo.
|
Hélas ! Si seulement Microsoft autorisait un autre compilo pour faire un jeu
XBox...
Ce n'est donc pas une option.
Cela dit, en passant un paramètre 'fantôme' ca marche :
class Toto
{
public:
template <class T> T* New(T* t=NULL) const { return new T; }
};
void test()
{
Toto t;
int *i;
i = t.New( (int*)NULL ); // OK
}
Reste la question : cette écriture est-elle portable sur gcc / CodeWarrior ?
(pour gamecube et ps2, pour ceux que ca interessent) (je n'ai pas encore les
compilo sous la main, là)
|
|
| Back to top |
|
 |
Gabriel Dos Reis Guest
|
Posted: Fri Jul 18, 2003 9:34 pm Post subject: Re: template methode |
|
|
"amerio" <amerio (AT) hotmail (DOT) com> writes:
| Quote: | Reste la question : cette écriture est-elle portable sur gcc / CodeWarrior ?
|
Pour GCC, oui.
-- Gaby
|
|
| Back to top |
|
 |
Fabien LE LEZ Guest
|
|
| Back to top |
|
 |
Arnaud Debaene Guest
|
Posted: Sat Jul 19, 2003 10:21 am Post subject: Re: template methode |
|
|
amerio wrote:
| Quote: | Bonjour,
J'essaye d'écrire une classe normale (non template) qui contiendrait
une méthode paramétrable (template) :
class Toto
{
public:
template <class T> T* New() const { return new T; }
};
// en fonction libre...
template <class T> T* New() { return new T; }
void test()
{
Toto t;
int *i;
i = t.New<int>(); // error : type 'int' unexpected
i = New<int>(); // ok
}
Le template en méthode ne compile pas. Est-ce un défaut de mon
compilo (VC6) ou bien est-ce illégal ?
|
Bug bien connu de VC6, corrigé dans VC7.
| Quote: | Et comment contourner le pb (si c'est possible...)
Avoir un paramètre "dummy" de type T pour ta méthode New. |
Arnaud
|
|
| Back to top |
|
 |
ns2v Guest
|
Posted: Sun Jul 20, 2003 10:02 am Post subject: Re: template methode |
|
|
| Quote: |
Bug bien connu de VC6, corrigé dans VC7.
sauf que le compilo xbox a toujours ete basé sur le 7, meme lorsque visual 6 |
servait d'ide.
microsoft nous aurais menti, c un 6.5 alors :p
|
|
| Back to top |
|
 |
amerio Guest
|
Posted: Sun Jul 20, 2003 4:30 pm Post subject: Re: template methode |
|
|
| Quote: | Hélas ! Si seulement Microsoft autorisait un autre compilo pour faire un
jeu
XBox...
tu as quel xdk, celui de juin n'a visiblement pas ce bug, je viens
d'essayer.
|
Le dernier est OK, en effet. Mais pour des raisons de compatibilités avec
d'autres lib, on doit rester pour l'instant avec une version plus ancienne
(en attendant que les libs soient mises à jour).
Pour la release d'un jeu, seul VC7 (avec le dernier Xdk) est en effet
autorisé par MS.
|
|
| Back to top |
|
 |
|