template überladen
-
Hi,
mal ne ganz komisch frage.. kann ich ein template überladen?Was mit vorschwebt ist so was:
CMyClass<int> myClass; // das ist jetzt ne klasse jedes beliebige int verarbeitet CMyClass<int,2048> myClass; // das ist genau die selbe klasse nur das hier alle int größer als 2048 auf 2048 gesetz werden
ich mag keine CMyClassDefault dann ne extra klasse für CMyCassMax und dann noch ne CMyClassMinMax....
Will das das so aussieht:
CMyClass<int> // CMyClassDefault
CMyClass<int,2048> // CMyCassMax
CMyClass<int,2048,126> // CMyCassMinMaxHoffe ihr versteht was ich meine
Geht das irgendwie????
-
Das Überladen geht natürlich, nur musst du in der T-Deklaration 2 ints als Argumente anpassen und nicht einfach 2048 wie in deinem Beispiel.
-
in deinem Fall würde ich Default-Parameter einsetzen. Template Spezialisierung wäre die zweite Möglichkeit:
template<class T> class A { // ... }; //nur für integers template<> class A<int> { // ... }; //usw.
-
class T schrieb:
CMyClass<int,2048> myClass; // das ist genau die selbe klasse nur das hier alle int größer als 2048 auf 2048 gesetz werden
Kannst Du mir den Satz erklären? Und vielleicht auch noch, was Du mit der ganzen Klasse machen willst und so Zeugs eben.
-
Das Überladen geht nur für Template-Funktionen.
Fur Template-Klassen gibt es partielle und komplette Speciallisirung.
-
hmm... thx für die infos, damit würds gehen, allerdings etwas umständlich.
Das beispiel oben war wohl etwas blöd gewäht...
Ich sag euch mal warums konkret geht:
Ich möchte mir nen container basteln, in dem ich daten stopfe die aus ner datei kommen. Das alles soll so so einfach zu bedienen sein, das keiner auch nur 1 mal ne doku aufschalgen muss...Rauskommen soll so dann so was
typedef struct { CFileItem<0,4> item1; // das hier ist ein long (4 byte) a posstion 0 im file CFileItem<8,2,4> item2; // das hier sind 2 bit mit offser 4 an position 8 CFileItem<16> item3; // das hier ist ein string an position 16 void read() { // 1 call und alles ist da item1.read(); item2.read(); item3.read(); }; } FILE_DATA;
CFileItem hat alle operatoren überladen die der user braucht um wie mit einem "normalen" datentyp zu arbeiten. Alles was ich nun noch brauche, ist das sich CFileItem automatisch auf den benötigten datentype einstellt, welcher von der anzahl der parameter abhängt (ist es nur einer ist ein string, bei 2 parameter bekommt im 2. die länge der datentypes in byte mit, sind 3 parameter da, ist soll er das ganze als bit-array handhaben....)
-
.......................... problem gelöst......... als ich den post zuende getippt habe ist mir die lösung eingefallen..... default parameter... LOL *kopf_gegen_die_wand_hau*
-
Shlo schrieb:
in deinem Fall würde ich Default-Parameter einsetzen. Template Spezialisierung wäre die zweite Möglichkeit:
class T schrieb:
.......................... problem gelöst......... als ich den post zuende getippt habe ist mir die lösung eingefallen..... default parameter... LOL *kopf_gegen_die_wand_hau*
Hast du überhaupt gelesen was in diesem Thread gepostet wurde?