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;           // fehler
    

    der 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.


Anmelden zum Antworten