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

[?] template...

2 réponses
Avatar
Valdo Tschantre
Je voudrais ecrire des choses comme ceci :


template <class TT>
class TemplateClass : public TT {

// ...

};


Es-ce possible ? Et si oui, quelles precautions prendre (aussi bien
dans la definition du template, que dans la classes qu'il prendrait en
param.) ?

Pour l'heure, je rencontre des *problemes d'acces memoire au
run-time*... (ie. la compilation et l'edition de liens sont OK.)

Merci,
Valdo.


--
valdo_tschantre@ifrance-NOSPAM.com

2 réponses

Avatar
Alexandre
"Valdo Tschantre" a écrit dans le
message de news:4076c49c$0$1941$
Je voudrais ecrire des choses comme ceci :


template <class TT>
class TemplateClass : public TT {

// ...

};


Je ne comprends pas trop... Tu veux une classe qui accepte un paramètre de
type (TT) mais qui hérite de ce paramètre (alors qu'il peut être n'importe
quoi, int par exemple) ??? Quel intéret ?

Avatar
Loïc Joly
Alexandre wrote:

"Valdo Tschantre" a écrit dans le
message de news:4076c49c$0$1941$

Je voudrais ecrire des choses comme ceci :


template <class TT>
class TemplateClass : public TT {

// ...

};



Ce code est correct.

Je ne comprends pas trop... Tu veux une classe qui accepte un paramètre de
type (TT) mais qui hérite de ce paramètre (alors qu'il peut être n'importe
quoi, int par exemple) ??? Quel intéret ?


Dès que tu as un template avec un type en argument, tu as un contrat
implicite à supporter. Pour vector, le contrat est que le type soit
copiable avec une sémentique classique. Pour std::sort, le contrat est
que le premier paramètre template soit un random access iterator et le
deuxième définisse une relation "strict weak ordering".

Dans son cas, un des éléments du contrat implicite à remplir est que TT
doit être une classe (prévue pour la dérivation en plus). Il n'y a rien
là d'étrange.

--
Loïc