Template mit Default Parameter mit Default Initialiserung in C++

Moin,
also mein Projekt besteht aus sehr vielen Dateien, wobei ich auf die Klasse Param nur in meiner Param.cpp ind Param.h und in einer cpp mit header, wo ich dann diese Klasse Param brauche zurückgreife. In der zweiten cpp und Header-Datei habe ich dann Param.h eingebunden.
Und hast du nun die Headerdatei gegen mehrfach include geschützt?

Gruß
 
Hi.
Wie sieht denn jetzt die Param Klasse aus?

Gruß

hi,
so:
C++:
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;
};

gruss
 
Hi.

Achso, die Meldung kommt aus der cpp Datei. Du mußt dort die Methode auch mit const definieren:
C++:
void Param::format() const {
   ...
}
Gruß
 
Hi.

Achso, die Meldung kommt aus der cpp Datei. Du mußt dort die Methode auch mit const definieren:
C++:
void Param::format() const {
   ...
}
Gruß

ok,
das tut jetzt. aber:
wenn ich nun in einer anderen Funktion (Header) dies aufrufe:
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));
und im Cpp dann benutze, dann hat er das Problem mit den Typenzuordnungen bzw. wenn Variablen nicht benutzt werden, dann bekomm ich einen Linker-Error. Sagt dir das was?

Gruss
 
ok,
das tut jetzt. aber:
wenn ich nun in einer anderen Funktion (Header) dies aufrufe:
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));
und im Cpp dann benutze, dann hat er das Problem mit den Typenzuordnungen bzw. wenn Variablen nicht benutzt werden, dann bekomm ich einen Linker-Error. Sagt dir das was?

Gruss

hi, noch eine Frage, was muss ich bei class Param noch hinzufügen wenn ich statt einer Variablen CString z.B. "Hallo" habe?

Grüsse
 
ok,
das tut jetzt. aber:
wenn ich nun in einer anderen Funktion (Header) dies aufrufe:
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));
Das kannst du so wohl kaum aufrufen. Du mußt die Funktion erstmal definieren. Wie hast du die Funktion abc definiert? Wie rufst du die Funktion dann auf?
hi, noch eine Frage, was muss ich bei class Param noch hinzufügen wenn ich statt einer Variablen CString z.B. "Hallo" habe?
Eigentlich gar nichts. Außer dass du natürlich schreiben solltest:
C++:
_T("Hallo")

Übrigens, du kannst einen Beitrag auch noch bearbeiten und mußt nicht einen neuen Beitrag erstellen.

Gruß
 
Frage:
die Aufrufe dürfen nicht verändert werden (so wie ich es dir gegeben habe)
ich habe Fkt abc, dieser Fkt werden mehrere Variablen unterschiedlichem Typs übergeben. Es war bisher so, dass es wie schon erwähnt mehre Funktionen gab. Nun will ich versuchen, diese Anzahl zu dezimieren. Mein Problem ist aber, dass CString,int,,flot und Charakters übergeben werden. Mit Charakters meine ich solche Dinge wie "Hallo". Vorher, war es so, dass dies wohl automatisch dann als CString erkannt wird. Ich arbeite übrigens mit MFC.

Grüsse
 

Neue Beiträge

Zurück