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

helebelele

Frischling

  • »helebelele« ist der Autor dieses Themas

Beiträge: 32

Wohnort: Düsseldorf

  • Private Nachricht senden

1

01.02.2012, 17:07

error C2011: 'class' Typneudefinition

Hallo,

ich hatte vor einiger Zeit ein Projekt gehabt. Ein kleine RPG das ich Schritt für Schritt programmieren wollte. Angefangen habe ich mit einer Konsolenanwendung.
War schon relativ weit bis ich meinen PC neu aufgesetzt habe und leider vergessen habe mein Projekt zu sichern. Danach verlor ich die Lust, bis mir gestern einfiel, dass ich hier im Forum einige Teile
meines Quellcodes gepostet hatte. Dadurch konnt ich 3 Dateien wieder "retten". Steh jetzt wieder ganz am Anfang und hab jetzt doch wieder Lust das Projekt weiterzuführen.

Mein Problem ist jetzt jedoch, dass ich den Fehler "Error C2011: 'CPlayer': 'class' Typneudefinition" bekomme.
Hab nur eine neue Variable in der Klasse hinzufügen wollen und seitdem will es einfach nich laufen. Hab leider nichts gefunden was mir weiterhelfen konnte.

Das ganze Projekt ist in C++ geschrieben und eine Konsolenanwendung für die ich ein leeres Projekt angelegt hatte. Ich benutze VS2010 Prof.

Meine Klasse sieht wie folgt aus:

Player.h

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <string>

class CPlayer
{
    private:

        //Membervariablen
        std::string m_chName;
        std::string m_chRace;
        int m_health;
        int m_attack;
        int m_defense;
        int m_agility;
        
    public:

        //Memberfunktionen
        CPlayer (std::string name, int race);
        void showStatus();
};


Player.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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#include "Player.h"
#include <string>

using namespace std;

// Konstruktor
CPlayer::CPlayer (string name, int race)
{
    m_chName = name;

    m_health = 100;

    // Attribute je nach Rasse verteilen
    if (race == 1)
    {
        m_chRace = "Mensch";
        m_attack = 12; m_defense = 9; m_agility = 20;
    }
    else if (race == 2)
    {
        m_chRace = "Ork";
        m_attack = 9; m_defense = 12; m_agility = 20;
    }
    else if (race == 3)
    {
        m_chRace = "Elf";
        m_attack = 9; m_defense = 9; m_agility = 25;
    }

    cout << "Spieler \"" << m_chName << "\" wurde erfolgreich erstellt!\n\n";
}

// Statusanzeige des Spielers
void CPlayer::showStatus ()
{
    cout << "Informationen ueber den Spieler: \n";
    cout << "---------------------------------\n\n";
    cout << "Name: " << m_chName << endl;
    cout << "Rasse: " << m_chRace << endl << endl;
    cout << "Lebenspunkte: " << m_health << endl;
    cout << "Angriff: " << m_attack << endl;
    cout << "Verteidigung: " << m_defense << endl;
    cout << "Schnelligkeit: " << m_agility << endl << endl;
}


Was ich ändern wollte war, dass ich in der Player.h eine weitere Variable einfügen wollte. Das sah dann so aus:

Player.h

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
#include <iostream>
#include <string>

class CPlayer
{
    private:

        //Membervariablen
        std::string m_chName;
        std::string m_chRace;
        int m_health;
        int m_attack;
        int m_defense;
        int m_agility;
    int m_balance;
        
    public:

        //Memberfunktionen
        CPlayer (std::string name, int race);
        void showStatus();
};


Seitdem will das nich mehr so wie ich will. :(
Das war alles was ich geändert habe...

Hoffe mir kann jemand helfen :)
Vorab schon mal vielen Dank :D

Gruß
Tino

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

2

01.02.2012, 17:11

Visual Studio 2010 Professional? Gibt's das jetzt schon kostenlos oder bei Büchern dazu?
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

3

01.02.2012, 17:37

Einfach mal nicht fragen wo das "Geld" herkommt. ^-^
Fang doch lieber nochmal komplett von vorn an. Das UML-Diagramm dürfte ja auch weg sein. Viel Spaß ;)

MfG
Check

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

4

01.02.2012, 17:37

Visual Studio 2010 Professional? Gibt's das jetzt schon kostenlos

Als Student schon, ja.

@Problem:
Such mal nach Include Guards. Die fehlen bei dir komplett.

helebelele

Frischling

  • »helebelele« ist der Autor dieses Themas

Beiträge: 32

Wohnort: Düsseldorf

  • Private Nachricht senden

5

01.02.2012, 17:46

Hm... werd mich mal umschauen. Über mein VS sag ich jetzt mal nix ;)

Das Ding ist nur, dass die 3 Dateien die ich hier ausm Forum habe auf dem Stand sind, bei dem mein Projekt auch nur aus den 3 Dateien bestand -.-
Außerdem ging alles, als ich die Dateien getestet hab. Erst als ich was geändert habe ging es nicht mehr :/

edit: ok ich habs... hatte nen kleinen Fehler in meinem Programm. Hab die "Player.h" an 2 Stellen included. Dabei war eins davon Falsch.
Habe mir eine Klasse Menu erstellt bei der ich die Player-Klasse includen wollte. Dabei hab ich "Player.h" sowohl in der "Menu.h" als auch in "Menu.cpp" included. Nachdem ich die bei "Menu.h" rausgenommen hatte
ging es wieder :)

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »helebelele« (01.02.2012, 17:51)


helebelele

Frischling

  • »helebelele« ist der Autor dieses Themas

Beiträge: 32

Wohnort: Düsseldorf

  • Private Nachricht senden

6

01.02.2012, 17:55

Jetzt aber ne Frage zu den Include Guards.
Dieses "#ifndef" soll das so viel bedeuten wie "if not defined"? Also wenn eine Klasse oder Struktur noch nicht definiert ist wird sie definiert. Wenn sie schon definiert wurde, springt es zum "#endif" und definiert es nicht nochmal?
Hoffe ich hab das richtig verstanden :)

Wann wäre es denn dann sinnvoll include guards zu nutzen und wann nicht?

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

7

01.02.2012, 18:03

Über mein VS sag ich jetzt mal nix ;)

Dann geh ich mal nicht von einer MSDNAA-Version aus. :thumbdown:
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

8

01.02.2012, 18:11

Wann wäre es denn dann sinnvoll include guards zu nutzen und wann nicht?

Include Guards setzt man immer ein. Es wird dann maximal 1x definiert.

10

01.02.2012, 19:26

Einfach mal nicht fragen wo das "Geld" herkommt. ^-^

Es mag vielleicht nerven, immer den Moralapostel zu spielen, aber ich bin der Meinung, gerade als Entwickler sollte man die Arbeit anderer respektieren. Die wollen doch auch nur Leben.

Und es ist wirklich nicht schwer, legale Software zu benutzen. Wie dot schon gezeigt hat, gibt es sogar von Microsoft ein Angebot und auch die Alternativen sind nicht schlecht. Eine Straftat zu begehen, weil man es kann und es keiner merkt ist noch keine Entschuldigung, zumal es hier ja echt nicht schwer ist, darauf zu verzichten.

Nochmal zum Thema und mit Erklärung:
http://de.wikipedia.org/wiki/Include_Guard
Lieber dumm fragen, als dumm bleiben!

Werbeanzeige