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...)
| Le template en méthode ne compile pas. Est-ce un défaut de mon compilo (VC6) ^^^^^
Mauvais compilo, changer de compilo.
-- Gaby
amerio
| 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à)
| 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à)
| 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à)
Gabriel Dos Reis
"amerio" writes:
| Reste la question : cette écriture est-elle portable sur gcc / CodeWarrior ?
Pour GCC, oui.
-- Gaby
"amerio" <amerio@hotmail.com> writes:
| Reste la question : cette écriture est-elle portable sur gcc / CodeWarrior ?
| Reste la question : cette écriture est-elle portable sur gcc / CodeWarrior ?
Pour GCC, oui.
-- Gaby
Fabien LE LEZ
On Fri, 18 Jul 2003 20:05:58 GMT, "amerio" wrote:
Est-ce un défaut de mon compilo (VC6)
Oui.
-- Tout sur fr.* (FAQ, etc.) : http://www.usenet-fr.net/fur/ et http://www.aminautes.org/forums/serveurs/tablefr.html Archives : http://groups.google.com/advanced_group_search http://www.usenet-fr.net/fur/usenet/repondre-sur-usenet.html
On Fri, 18 Jul 2003 20:05:58 GMT, "amerio" <amerio@hotmail.com> wrote:
Est-ce un défaut de mon compilo (VC6)
Oui.
--
Tout sur fr.* (FAQ, etc.) : http://www.usenet-fr.net/fur/
et http://www.aminautes.org/forums/serveurs/tablefr.html
Archives : http://groups.google.com/advanced_group_search
http://www.usenet-fr.net/fur/usenet/repondre-sur-usenet.html
-- Tout sur fr.* (FAQ, etc.) : http://www.usenet-fr.net/fur/ et http://www.aminautes.org/forums/serveurs/tablefr.html Archives : http://groups.google.com/advanced_group_search http://www.usenet-fr.net/fur/usenet/repondre-sur-usenet.html
Arnaud Debaene
amerio wrote:
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.
Et comment contourner le pb (si c'est possible...) Avoir un paramètre "dummy" de type T pour ta méthode New.
Arnaud
amerio wrote:
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.
Et comment contourner le pb (si c'est possible...)
Avoir un paramètre "dummy" de type T pour ta méthode New.
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
amerio
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.
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.
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.