tutorials.de Buch-Aktion 02/2012
ERLEDIGT
JA
ANTWORTEN
2
ZUGRIFFE
841
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von Jellysheep
    Jellysheep Jellysheep ist offline Mitglied Platin
    Registriert seit
    Jan 2009
    Ort
    Arbeitsspeicher
    Beiträge
    689
    Hi,
    wie kann ich einen impliziten Konvertierungsoperator definieren, mit dem ich meine Klasse in int und int in meine Klasse konvertieren kann?
    In C# geht das, z.B. http://w3.c-plusplus.info/forum/view...w-is-next.html oder http://www.programmiersprachen.de/fo...ngsoperatoren/ .
    Funktioniert das auch in C++?
     
    Grüße, Jellysheep

    Jeder Helfer freut sich über eine Bewertung oder ein Danke.

    Freiheit für die Gummibärchen, nieder mit den Tüten!
    Link :D

  2. #2
    Avatar von sheel
    sheel sheel ist offline Moderator
    tutorials.de Moderator
    Registriert seit
    Jul 2007
    Beiträge
    3.992
    Wenn ich mich richtig erinnere, einfach so:

    Code cpp:
    1
    2
    3
    4
    
    class xyz
    {
        operator int(){...}
    };

    Keinen Returnwert, trotzdem ein int zurückgeben.

    Umgekehrt gibts mehrere Situationen
    Einen Konstruktor, der ein int übergeben bekommt, einen =operator mit Parameter int etc.
     

  3. #3
    Avatar von Jellysheep
    Jellysheep Jellysheep ist offline Mitglied Platin
    Registriert seit
    Jan 2009
    Ort
    Arbeitsspeicher
    Beiträge
    689
    Dankeschön.
    Ich habe jetzt folgenden Code; wie man sieht, möchte ich eine Klassenstruktur wie in Java erstellen.
    Code cpp:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    
    class Object{
    public:
        Object(){}
        Object(int i){}; //1
        char* toString(){
            return "Object_instance";
        }
        void print(){
            std::cout<<toString()<<endl;
        }
    };
    class Integer : public Object {
        int i;
    public:
        Integer(int x):i(x){}; //2
        Integer(){}
        operator int(){
            return i;
        }
        char* toString(){
            return "Integer_instance";
        }
    //  void print(){
    //      std::cout<<toString()<<endl; //3
    //  }
    };
     
    void print(Object o){
        o.print();
    }
     
    int main(int argc, char* argv[])
    {
        print(4); //4
        Integer i;
        i = 4;
        i.print(); //5
        Object o = i;
        o.print();
        int j = i;
        std::cin.get();
        return 0;
    }

    1. Wenn ich bei //4 die print(4)-Funktion aufrufe, wird der Konstruktor von Object (//1) aufgerufen. Leider kann ich nicht auf den Integer-Konstruktor (//2) "umleiten", weil ich den Object-Konstruktor weder löschen noch abstrakt definieren kann.
    Wie kann ich es machen, dass hier der Integer-Konstruktor aufgerufen wird?

    2. Wieso wird bei //5 nur "Object_instance" ausgegeben, wenn ich die Funktion bei //3 weglasse? Ich dachte, dass die Methode print() von Object innerhalb der Integer-Klasse auf die Integer-Methode toString() zugreift?

    || EDIT: Das 2. Problem habe ich gelöst; man muss in der Object-Klasse die Methode als virtual definieren, dann funktioniert es.

    || EDIT2: Diese Funktion habe ich eingefügt, jetzt ist auch das erste Problem gelöst:
    Code cpp:
    1
    2
    3
    
    void print(int i){
        print(Integer(i));
    }
    Geändert von Jellysheep (10.08.10 um 15:56 Uhr)
     
    Grüße, Jellysheep

    Jeder Helfer freut sich über eine Bewertung oder ein Danke.

    Freiheit für die Gummibärchen, nieder mit den Tüten!
    Link :D

Ähnliche Themen

  1. Antworten: 15
    Letzter Beitrag: 10.06.10, 17:48
  2. settimeout in eigener klasse auf eine Methode der Klasse
    Von user2580 im Forum Javascript & Ajax
    Antworten: 2
    Letzter Beitrag: 12.04.09, 16:26
  3. Array mit eigener Klasse füllen
    Von Hackbard_C im Forum C/C++
    Antworten: 1
    Letzter Beitrag: 04.07.07, 13:53
  4. Probleme mit eigener Klasse
    Von Rene42 im Forum .NET Café
    Antworten: 3
    Letzter Beitrag: 16.02.07, 09:25
  5. JPanel in eigener Klasse erstellen..
    Von f-zoid im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 3
    Letzter Beitrag: 05.05.06, 16:55

Stichworte