C++ & Templates

Tags:    c++

Hej

Hvis jeg har en template klasse som jeg ønsker at bruge som argument i en anden klasse skal jeg så have en funktion for hver template type?

Ex:
Fold kodeboks ind/udKode 

Ovenstående kode er skrevet ud fra hukommelsen så der kan være fejl i det...

Dette virker ikke men skal jeg så lave "<<" operator for alle data-type jeg har behov for? Eller er der et smart trick.

Jeg vil helst undgå at CMessageInterface blev afhængig af T fra CMessage

/Alsig



Indlæg senest redigeret d. 13.04.2008 00:12 af Bruger #13508
5 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 2 karma
Sorter efter stemmer Sorter efter dato

class CMessageInterface
{
public:
void operator << ( CMessage& rMessage )
{

}
};
[/code]


Nu ved jeg godt du siger at der kan være fejl, da du har skrevet det udfra hukommelsen, men vil lige nævne det hvis du ikke er klar over det.

basic_ostream& operator<<(
basic_ostream& (*pf)(basic_ostream&));

En stream operator returner ikke void, men i stedet en reference til ostream dvs. ostream&.





Det kommer helt an på hvad du skal med rMessage i << operatoren, og hvad T er for en størrelse.

Ofte vil man bede CMessage om at gøre "the thing", f.eks:

Fold kodeboks ind/udKode 




T i CMessage er oftest "simple" variable, ex. int, char osv. men de variere jo også i størrelse.

Jeg er lidt i mod at lave 8 overloaded overator af "<<" og 8 af ">>" (signed/unsigned char, short, int, float og double) da koden bag de enkle operator ligner meget hinanden.

Men det kan da godt være at det er den eneste vej frem :(

/Alsig



Godmorgen

Ok, så fik jeg lige rettet brillerne... :$

Dit eksempel er lige nøjagtigt det jeg har behov for!

Tak

Skriv lige en kommentar og du får pointene.

/Alsig



Jeg samler ikke på point.



t