|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre du Club
![]() sylvain Technicien maintenance Inscription : juillet 2009 Messages : 112 ![]() |
bonjour ,
J'ai un soucis sur les déclarations de template et spécialisation : Dans ma class Code :
E2099 Spécialisation explicite autorisée seulement dans portée du fichier ou espace de nommage Contexte d'analyseur complet com.cpp(23): #include com.h com.h(83): class com Merci beaucoup pour vôtre aide !
|
||
|
|
00
|
|
|
#2 | ||
|
Membre du Club
![]() sylvain Technicien maintenance Inscription : juillet 2009 Messages : 112 ![]() |
hi !
G trouvé une partie du problème : En validant l'option : compabilité : spécialisation de template de fonction membre Plus d'erreurs de compil . Pour l'appel de fonction pour arguments char , je suis obligé d'être explicite !! Code :
merci beaucoup ! |
||
|
|
00
|
|
|
#3 | ||||||||||
|
Expert Confirmé Sénior
![]() Développeur C++\Delphi Inscription : juillet 2006 Messages : 9 202 ![]() |
Tu spécialise la méthode WriteCom dans la même classe que la template ??
Cela dépasse mes pauvres connaissance de template ! Changer ce genre d'option, ce n'est pas mon truc, je fais tout pour éviter de tel extrémité ! Au final, si tu dois spécialiser explicitement, autant faire des méthode WriteChar, WriteInteger ... comme dans le TBinaryWriter En plus c'est plus lisible, on voit tout de suite ce que fait WriteXXX, alors qu'avec un template, il faudra lire le type de la variable, pour la maintenance, je ne suis pas convaincu ! Tu fais ton propre composant pour le port COM ? tu sais qu'il en existe déjà et comme utilisé par bcp sont reconnus comme fiable ! wstring ? Ne serait-il pas plus approprié en C++Builder d'utiliser String\UnicodeString ? Tu pourrais même d'ailleurs créer une classe hérité de TStream pour gérer le Port COM, tu n'aurais à coder QUE la variante buffer *void Ensuite, tu utilises un TBinaryWriter et TBinaryReader qui eux contient les variantes WriteChar, WriteString ... Perso, je n'ai jamais fait de template avec juste une méthode template mais plutôt une classe entièrement template puis des classes de spécialisation pour me simplifier la syntaxe, je fais un type intermédiaire indiquant le type templaté puis j'hérite de ce type pour y ajouter d'autres méthodes (je t'ai simplifié les noms, voir le sujet Template et Héritage) Code :
Code :
Code :
Code :
Code :
__________________
Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y ! Attention Troll Méchant ! ![]() "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer ! L'ignorance n'excuse pas la médiocrité ! L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde) Il faut avoir le courage de se tromper et d'apprendre de ses erreurs Halte à la ségrégation des Cinémas, VO sur Paris, VF en Banlieue, Abonnement résilié ! |
||||||||||
|
|
00
|
|
|
#4 |
|
Membre du Club
![]() sylvain Technicien maintenance Inscription : juillet 2009 Messages : 112 ![]() |
merci beaucoup pour tout ces conseils .
![]() ![]() Ce n'est uniquement à titre pédagogique pour comprendre et assimiler le c++ et ces grands principes ...... Si je fais la spécialisation dans la class c'est le même code erreur . E2099 Spécialisation explicite autorisée seulement dans portée du fichier ou espace de nommage merci ! |
|
|
00
|
Copyright © 2000-2013 - www.developpez.com