Defaultparamter bei DLLs?
-
Hier die Deklartion in der Headerdatei:
// Kuh.h class Kuh { public: void muh(int count); };Hier die Definiton in der Headerdatei:
// Kuh.cpp #include "Kuh" void Kuh::muh(int count = 1) { }Angenommen die Klasse kommt in die Kuh.dll. Diese Benutze ich jetzt in meinem Projekt. Nun rufe ich muh in der Klasse kuh auf - wir der Defaultparameter dann erkannt oder mekert mich dann schon der Compiler an, dass ich zu wenig Argument angegeben habe?
BTW: ich bin im landwirtschaftlich geprägten Region aufgewachsen - dort gibt es kein foo und bar
-
1. Die Default Argumente gehören in die Dekl. (Header Datei).
2. Ich nehme an, da hast Du dich verschrieben und meinst:Hier die Definiton in der Headerdatei
Source DateiSimon
-
Das sollte einen Compiler Fehler geben, wenn du die Funktion ohne Argument aufrufst..
Eine anderen Quelldatei kennt ja die Definition (.cpp) nicht.Warum machst du den Default Parameter nicht im Header?
-
theta schrieb:
1. Die Default Argumente gehören in die Dekl.
Laut C++ Standard? oder weils einfach nur unschön ist?
theta schrieb:
Ich nehme an, da hast Du dich verschrieben und meinst
Nein hab mich nicht verschrieben. Ist die Headerdatei nicht die Deklaration?
-
drakon schrieb:
Warum machst du den Default Parameter nicht im Header?
Es geht mir nur darum, ob das möglich ist um ein besseres Verständnis für C++ zu bekommen
-
Das einzige, was der Nutzer deiner Funktion zu sehen bekommt, ist void muh(int count), also kein default parameter. DLL oder nicht spielt dabei noch gar keine Rolle.
Der default parameter ist keine Eigenschaft der Funktion. Das heißt, auf obj-file Ebene, oder binär oder sonstwas, gibt es keine Information über einen möglichen default-Wert. Der Wert muss immer übergeben werden, so sieht es technisch aus. Das einsetzen eines default Werts macht der Compiler des Aufrufers, d.h. er baut das selber ein, dass der Wert übergeben wird, als hättest du das geschrieben. Ohne die Information, dass ein default vorgesehen ist, kann er das nicht machen. Das wäre ja geraten.
-
Vertexwahn schrieb:
theta schrieb:
Ich nehme an, da hast Du dich verschrieben und meinst
Nein hab mich nicht verschrieben. Ist die Headerdatei nicht die Deklaration?
Doch, üblicherweise ist die Deklaration von Methoden (Member einer Klassen- Definition) in der Headerdatei. Bloss schreibst Du von der (Methoden-) Definition in der Headerdatei, obwohl sie in der Source (cpp) Datei zu sein scheint.
Simon
-
oh jetzt sehe ich was ihr meint - stimmt hab mich doch verschieben... "Hier die Definiton in der Headerdatei: " ist natürlich Unsinn