Template mit Default Parameter mit Default Initialiserung in C++

Hi.

Dein Beschreibung bringt gar nichts. Zeig konkreten Code und die dazugehörigen Fehlermeldungen.

Gruß

also so sieht mein Code für den Aufruf mit der Funktion Param aus:
Header:
C++:
void abc(CString var1, Param var2= Param(0), Param var3= Param(0), Param var4= Param(0), Param var5= Param(0), Param var6= Param(0), Param var7= Param(0));
so sieht mein Aufruf in der Funktion aus:
C++:
void 123::abc(CString var1, Param var2, Param var3, Param var4, Param var5, Param var6, Param var7;
In einer anderen Funktion wird dann z.B. der Funktion abc folgendes übergeben:
C++:
abc(var1,var2,"Hallo",var3);
oder
C++:
abc(var1,var2,var3,var4,var5,var6,var7);
var1-var7 können wie gesagt CString,float oder int sein

Code:
C++:
CString Param::format() const {
	CString res;
	switch (character) {
		case Param::t_int:
			 res.Format("\t%i", i);
			 return res;
		case Param::t_float:
			 res.Format("\t%f", f);
			 return res;
		case Param::t_CString:
			 return ('\t' + str);
		case Param::t_char:
			 
			 return ('\t' + str);
		default:
			throw std::logic_error("unknown type value");
	}
}

class Param 
{
	public:  
		enum Type { t_int, t_float,t_CString };
		
	private:  
		Type character;
		union {int i;    
			   float f; 
			   };
		CString str;
			
	public:  
		Param(const CString& s) : character(t_CString), str(s) { }  
		Param(int i) : character(t_int), i(i) { }  
		Param(float f): character(t_float), f(f) { }
		CString format() const;
};

Beispiel:
C++:
abc(var1,var2,"Hallo",var3);
Fehler:
cannot convert parameter 3 from 'const char' to 'Param'


Besser?

Gruss
 
Hi.
also so sieht mein Code für den Aufruf mit der Funktion Param aus:
Header:
C++:
void abc(CString var1, Param var2= Param(0), Param var3= Param(0), Param var4= Param(0), Param var5= Param(0), Param var6= Param(0), Param var7= Param(0));
Was für ein Aufruf? Du meinst sicherlich so sieht die Deklaration der Funktion aus.
so sieht mein Aufruf in der Funktion aus:
Du meinst, so fängt die Definition der Funktion an... (außer das da sicherlich nicht 123:: steht)
Beispiel:
C++:
abc(var1,var2,"Hallo",var3);
Fehler:
cannot convert parameter 3 from 'const char' to 'Param'
Du meinst sicherlich 'const char*'. Ich sehe aber nicht warum das nicht gehen sollte. Evtl. ist dein Compiler zu dumm.

Dem kannst du auf die Sprünge helfen, indem du noch einen Konstruktor für const char* hinzufügst und den :
C++:
Param(const char* s): character(t_CString), str(s) { }
Ja. Warum nicht gleich so?!

Gruß
 
Hi.Was für ein Aufruf? Du meinst sicherlich so sieht die Deklaration der Funktion aus.

Du meinst, so fängt die Definition der Funktion an... (außer das da sicherlich nicht 123:: steht)

Du meinst sicherlich 'const char*'. Ich sehe aber nicht warum das nicht gehen sollte. Evtl. ist dein Compiler zu dumm.

Dem kannst du auf die Sprünge helfen, indem du noch einen Konstruktor für const char* hinzufügst und den :
C++:
Param(const char* s): character(t_CString), str(s) { }
Ja. Warum nicht gleich so?!

Gruß

[zitat]
Du meinst, so fängt die Definition der Funktion an... (außer das da sicherlich nicht 123:: steht)
[/zitat]

ich habe halt irgendwelche Namen genommen ;-)

hey es kompiliert durch!super danke, jetzt denke sollte es dann für int,char,float,CString gehen, dass egeal was es immer auch ist ein String zurückgeliefert wird oder?
wenn ich also
C++:
abc(var1,var2,var3,var4);
für var1=String,var2=int,var3=char,var4=float
schicke, dann sollte ich mit in der Funktion abc()
C++:
abc(Param var1, Param var2, Param var3, Param var4,Param var5 Param var6,Param var7) 
{ Cstring res
  res.Format("%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\r\n",var1,var2,var3,var4,var5,var6,var7)
}

wobei var5-var7 nicht vorhanden sind mein gewünschtes Ergebniss?

Gruss
 
hey es kompiliert durch!super danke, jetzt denke sollte es dann für int,char,float,CString gehen, dass egeal was es immer auch ist ein String zurückgeliefert wird oder?
wenn ich also
C++:
abc(var1,var2,var3,var4);
für var1=String,var2=int,var3=char,var4=float
schicke, dann sollte ich mit in der Funktion abc()
C++:
abc(Param var1, Param var2, Param var3, Param var4,Param var5 Param var6,Param var7) 
{ Cstring res
  res.Format("%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\r\n",var1,var2,var3,var4,var5,var6,var7)
}

wobei var5-var7 nicht vorhanden sind mein gewünschtes Ergebniss?
Das kommt erstmal drauf an, was dein gewünschtes Ergebnis überhaupt ist. ;-)

So geht es außerdem nicht. Du mußt die format Methode der Param Klasse aufrufen.

Gruß
 

Neue Beiträge

Zurück