Fehler im Konstruktor ?



  • Hi,

    ich hab ein Problem mit meinem Konstruktor :

    Coord.h:
    class Coord {
    public:
    // management methods
    Coord (const int newx = 0, const int newy = 0);
    private:
    int xc;
    int yc;
    };

    Coord.cpp:
    Coord::Coord (const int newx, const int newy)
    {
    xc = newx;
    yc = newy;
    }

    Coordtest.cpp:
    #include "Coord.h"

    int main ()
    {
    Coord c1 = new Coord(2, 4); // Im Programm Zeile 9
    Coord c2 = new Coord(4, 6); // Im Programm Zeile 10
    Coord c3 = new Coord(); // Im Programm Zeile 11
    ...
    return 1;
    }

    bekomme ich folgenden Fehler :

    Coordtest.cpp: In function »int main()«:
    Coordtest.cpp:9: Fehler: ungültige Umwandlung von »Coord*« in »int«
    Coordtest.cpp:9: Fehler: Argument 1 von »Coord::Coord(int, int)« wird initialisiert
    Coordtest.cpp:10: Fehler: ungültige Umwandlung von »Coord*« in »int«
    Coordtest.cpp:10: Fehler: Argument 1 von »Coord::Coord(int, int)« wird initialisiert
    Coordtest.cpp:11: Fehler: ungültige Umwandlung von »Coord*« in »int«
    Coordtest.cpp:11: Fehler: Argument 1 von »Coord::Coord(int, int)« wird initialisiert

    Woran kann das liegen?

    Gruß SkySurfer



  • Hallo

    //Coord.h:
    class Coord {
    public:
    // management methods
    Coord (const int newx = 0, const int newy = 0);
    private:
    int xc;
    int yc;
    };
    
    //Coord.cpp:
    Coord::Coord (const int newx, const int newy) :
      xc(newx), yc(newy) // Initialisierungsliste!
    {
    }
    
    //Coordtest.cpp:
    #include "Coord.h"
    
    int main ()
    {
    Coord c1(2, 4); // Instanz auf dem Stack
    Coord* c2 = new Coord(4, 6); // Pointer auf dem Stack und Instanz auf dem Heap
    ...
    delete c2; // Nach Gebrauch muß die Instanz hinter c2 gelöscht werden
    return 1;
    }
    

    Und sfds

    bis bald
    akari



  • daran, das du ein * vergessen hast

    Coord* c1 = new Coord(2, 4); // Im Programm Zeile 9
    Coord* c2 = new Coord(4, 6); // Im Programm Zeile 10
    Coord* c3 = new Coord(); // Im Programm Zeile 11
    

    So sollte alles gehen, oder du lässt die Pointer gleich weg und schreibst

    Coord c1(2, 4); // Im Programm Zeile 9
    Coord c2(4, 6); // Im Programm Zeile 10
    Coord c3(); // Im Programm Zeile 11
    


  • Hab diese Variante gewählt:

    Coord c1(2, 4); // Im Programm Zeile 9
    Coord c2(4, 6); // Im Programm Zeile 10
    Coord c3(); // Im Programm Zeile 11
    

    bekomme dann aber die folgende Meldung:

    Coordtest.cpp: In function »int main()«:
    Coordtest.cpp:14: Fehler: assignment of function »Coord c3()«
    Coordtest.cpp:14: Fehler: »Coord« kann nicht nach »Coord ()()« in assignment umgewandelt werden
    Coordtest.cpp:15: Warnung: Die Adresse von »Coord c3()« wird immer zu »wahr« auswerten
    Coordtest.cpp:17: Fehler: no match für »operator-=« in »c3 -= c1«
    Coordtest.cpp:18: Warnung: Die Adresse von »Coord c3()« wird immer zu »wahr« auswerten



  • SkySurfer schrieb:

    Hab diese Variante gewählt:

    Coord c1(2, 4); // Im Programm Zeile 9
    Coord c2(4, 6); // Im Programm Zeile 10
    Coord c3(); // Im Programm Zeile 11
    

    bekomme dann aber die folgende Meldung:

    Coordtest.cpp: In function »int main()«:
    Coordtest.cpp:14: Fehler: assignment of function »Coord c3()«
    Coordtest.cpp:14: Fehler: »Coord« kann nicht nach »Coord ()()« in assignment umgewandelt werden
    Coordtest.cpp:15: Warnung: Die Adresse von »Coord c3()« wird immer zu »wahr« auswerten
    Coordtest.cpp:17: Fehler: no match für »operator-=« in »c3 -= c1«
    Coordtest.cpp:18: Warnung: Die Adresse von »Coord c3()« wird immer zu »wahr« auswerten

    weils

    Coord c3;
    

    ist



  • Ohje ich lass es für heut glaub ich...
    Danke


Anmelden zum Antworten