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

08.03.2006, 10:03

finde Fehler nicht...

ich habe einfach mal das Beispiel aus listing 7.15 gemacht (ist nicht 100% identisch) und bekomme folgende Fehlermeldung:

Quellcode

1
2
3
4
5
6
7
8
9
------ Build started: Project: class_Test, Configuration: Debug Win32 ------
Compiling...
main.cpp
Linking...
main.obj : error LNK2001: unresolved external symbol "public: static int Craumschiff::m_zaehler" (?m_zaehler@Craumschiff@@2HA)
M:\workspace\Visual Studio 2005\Projects\class_Test\Debug\class_Test.exe : fatal error LNK1120: 1 unresolved externals
Build log was saved at "file://m:\workspace\Visual Studio 2005\Projects\class_Test\class_Test\Debug\BuildLog.htm"
class_Test - 2 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========


mein code sieht so aus:
ich finde da einfach keinen unterscheid, wenn ich den code von der Cd kompiliere klappts!?!

Quellcode

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
44
45
46
47
48
49
50
51
52
53
54
#include <iostream>

using namespace std;

class Craumschiff
{
protected:
    int m_farbe;
    int m_energie;

public:
    Craumschiff();
    ~Craumschiff();

    static int m_zaehler;
};

Craumschiff::Craumschiff()
{
    cout << "Constructor aufgerufen" <<endl;

    m_farbe = 0;
    m_energie = 0;
    m_zaehler++;
    
    cout << "Anzahl der Raumschiffe: " << m_zaehler << endl;
}

Craumschiff::~Craumschiff()
{
    cout << "Destructor aufgerufen"<< endl;
    m_zaehler--;
    cout << "Anzahl der Raumschiffe: " << m_zaehler << endl;
}


int main()
{
    Craumschiff::m_zaehler = 0;
    Craumschiff *pSchiffe = NULL;
    int iAnzahl;

    cout << "wie viele schiffe sollen erstellt werden?";
    cin >> iAnzahl;

    if(iAnzahl<1)
        iAnzahl =1;

    pSchiffe  = new Craumschiff[iAnzahl];

    delete[] pSchiffe;

    cin >> iAnzahl;
}


Vielen dank

Anonymous

unregistriert

2

08.03.2006, 10:15

Schieb mal die Definition in der main()-Methode

C-/C++-Quelltext

1
 Craumschiff::m_zaehler = 0;

dort heraus und vor die main()-Methode.

Grüße
Stefan

3

08.03.2006, 10:18

ui, das war aber eine schnelle antwort, danke :) aber leider hilft das nicht. im buch steht die zeile ja auch in der main funktion:

wenn ich also die zeile dann vor die main funktion setzte bekomme ich folgende meldung mit der ich nichts anfangen kann :)

Quellcode

1
m:\workspace\visual studio 2005\projects\class_test\class_test\main.cpp(36) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int

Anonymous

unregistriert

4

08.03.2006, 10:23

Ah ja, sorry... jetzt seh ichs ;)

C-/C++-Quelltext

1
int Craumschiff::m_zaehler = 0;


muss es heißen - du hast den Typ vergessen ;)

Grüße
Stefan

5

08.03.2006, 10:28

oohhh :) ja danke.. schönene Tag noch

Werbeanzeige