Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

29.03.2012, 08:58

Listing7.7 Übung -> undefined reference

Hi Leute,

ich arbeite gerade das Buch durch und hab ein kleines Problem:

Ich habe versucht die Übung7.7 selbstständig zu lösen, und komme an ein Problem, mir meldet meine IDE folgendes:

Quellcode

1
2
/home/cinema/Programmieren/C++/Listing7.7/main.cpp|11|undefined reference to `CRaumschiff::CRaumschiff()'|
/home/cinema/Programmieren/C++/Listing7.7/main.cpp|12|undefined reference to `CRaumschiff::CRaumschiff(int,int)'|


main.cpp

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
#include "CRaumschiff.hpp"

int main()
{
    CRaumschiff *pSpieler = NULL;
    CRaumschiff *pGegner = NULL;

    pSpieler = new CRaumschiff;
    pGegner = new CRaumschiff(100,100);
    return 0;
}


CRaumschiff.hpp

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class CRaumschiff
{
    private:

        // Membervariablen
        int m_xPos;
        int m_yPos;
        int m_Energie;
        float m_fGeschwindigkeit;

    public:
        CRaumschiff(); // leerer Konstruktor
        CRaumschiff(int x, int y); // Konstruktor mit Parameter
        ~CRaumschiff(); // Destruktor
};


CRaumschiff.cpp

C-/C++-Quelltext

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
#include <iostream>
#include "CRaumschiff.hpp"

CRaumschiff::CRaumschiff()
{
    std::cout << "leerer Konsturkor aufgerufen" << std::endl;

    m_xPos = 0;
    m_yPos = 0;
    m_fGeschwindigkeit = 0f;
    m_Energie = 1000;
}

CRaumschiff::CRaumschiff(int x, int y)
{
    std::cout << "Konsturkor mit Parameterliste aufgerufen" << std::endl;

    m_xPos = x;
    m_yPos = y;
    m_fGeschwindigkeit = 0f;
    m_Energie = 1000;
}

CRaumschiff::~CRaumschiff()
{
    std::cout << "Destruktor aufgerufen!" << std::endl;
}


Das Listing ist noch nicht fertig. Es fehlen noch die Abfragen im Konstruktor mit Parameterliste,... Es geht mir nur einmal um das Grundgerüsst.

Ich arbeite mit Linux (Ubuntu 10.04) und Code::Blocks IDE

Wirago

Alter Hase

Beiträge: 1 193

Wohnort: Stockerau

Beruf: CRM Application Manager

  • Private Nachricht senden

2

29.03.2012, 09:39

hab zwar mit C++ nicht viel am hut, aber ich mein, dass dir in der main-methode bei

C-/C++-Quelltext

1
pSpieler = new CRaumschiff;
ein "()" fehlt.
also

C-/C++-Quelltext

1
pSpieler = new CRaumschiff();

denn auch leere konstruktoren müssen richtig angesprochen werden

3

29.03.2012, 09:44

Dachte ich zuerst auch (Lerne in der Schule C# und dort ist es so) doch laut dem Buch braucht man das bei einem Konstruktor ohne Parameterübergabe nicht.

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

4

29.03.2012, 09:45

@Wirago: Es ist beides gültig ;)

Vermutlich wird die CRaumschiff.cpp nicht kompiliert... Hab grad keine Zeit für eine genauere Erklärung(bin in der Schule :D)
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

5

29.03.2012, 09:56

Danke. Ich musste die CPP bei Building zu Debug und Release hinzufügen.

PS.: Bin auch in der Schule :)

Wirago

Alter Hase

Beiträge: 1 193

Wohnort: Stockerau

Beruf: CRM Application Manager

  • Private Nachricht senden

6

29.03.2012, 12:47

@Wirago: Es ist beides gültig ;)


oh, ok, das wusste ich nicht. kenns halt auch nur aus C# und Java :)
wieder was gelernt ^^

Werbeanzeige