problem: umformung nicht eindeutig
-
hallo leute,
hab vollgendes problem... ich habe eine klasse, die hat zwei konstruktoren. in dem einen kann man long als para und dem anderen *char ** übergeben/initialisieren. wenn ich aber die 0 verwenden will, kommt beim compilieren die meldung umformung nicht eindeutig.
code:class mycalss { myclass(long); myclass(const char *); }; ... void main() { myclass a = 12; // ok myclass b = "234"; // ok myclass c = 0; // fehler }fehler:
main.cpp: In function »int main()«: main.cpp:50: Fehler: Umformung von »int« in »myclass« ist nicht eindeutig myclass.cpp:85: Anmerkung: Kandidaten sind: myclass(const char*) myclass.cpp:51: Anmerkung: myclass(long int)^(das oben ist nur ein beispielprog. bitte nicht auf die zeilen in der fehlermeldung achten)^
ich brauche die 0 aber immer als long. gibt es irgendwie ne möglichkeit das so hinzukriegen? kennt da einer von euch etwas?
thx schon mal im vorraus.

-
pi88el schrieb:
myclass a = 12; // ok myclass b = "234"; // ok myclass a = 0; // fehlerder bezeichner 'a' ist schon vergeben

-
Versuchs mal mit "myclass c = long(0);"
(Die Konstante 0 darf halt auch in einen Nullzeiger verwandelt werden, von daher kann der Compiler nicht wissen ob du den Nullzeiger ((const char*)0) meinst, oder long(0).)
-
kannst auch einfach 0L schreiben, das ist ein long literal.