operatoren



  • hi,
    ich bin dabei eine klasse zu schreiben die auch über eigene operatoren verfügen soll.

    mein problem:

    tKlasse operator=(???);
    

    welchen dateityp muss anstatt der ??? verwenden das der operator bei folgendem code aufgerufen wird:

    tKlasse Objekt = 12345;
    

    oder

    tKlasse Objekt = "beispiel";
    


  • Erstens: Für diese beiden Anweisungen brauchst du nicht operator=, sondern einen Konstruktor in deiner Klasse.

    Zweitens: Du kannst dir op= als ganz normale Funktion vorstellen - und der jeweils rechte Operand wird als Parameter übergeben (der linke Operand ist *this). Also brauchst du im ersten Fall ein int, long oder eventuell double und im zweiten Fall 'const char*' oder 'const string&'.



  • ok,
    die beispiele warn villeicht nen bissl blöd, aber bei:

    tKlasse Objekt;
    Objekt = 1234;
    

    würde dann der operator aufgerufen werden.

    heißt das wenn der wert die große von nem short nicht überschreitet ist es ein short, wenn er großer is dann ein long u.s.w.?

    oder kommt das dann wieder auf den compiler an?

    und danke für die schnelle antwort



  • antwort suchender schrieb:

    heißt das wenn der wert die große von nem short nicht überschreitet ist es ein short, wenn er großer is dann ein long u.s.w.?

    Genau so sieht es aus (wobei es nicht nur auf die Größe ankommt, die bei einem einzigen Aufruf auftritt, sondern auf den Wertebereich, den du als sinnvoll einstufst).



  • (wobei es nicht nur auf die Größe ankommt, die bei einem einzigen Aufruf auftritt, sondern auf den Wertebereich, den du als sinnvoll einstufst).

    wie soll ich das verstehen? kann man etwa selbst bestimmen von welchen dateityp der wert ist? kann ich mir irgendwie nicht vorstellen. aber wenn das wirklich so gemeint war: wie?

    danke



  • Gehts um Templates??

    MfG



  • nein



  • Du wirst doch sicher wissen, was du mit dem Aufruf Objekt=1234; bezwecken willst. Und anhand dieses Wissens kannst du auch abschätzen, was für Datentypen du entgegennehmen mußt (und ohne Zusatzinformationen können wir dir hier nicht helfen).


Anmelden zum Antworten