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

Viktor

Alter Hase

  • »Viktor« ist der Autor dieses Themas

Beiträge: 533

Wohnort: Ludwigshafen

Beruf: Student

  • Private Nachricht senden

1

01.08.2008, 15:24

[Erledigt] [C++] Comilererror der exotischen Art

hab gerade mal ein etwas größeres Projekt am laufen (für meine Maßstäbe). Es handelt sich im Prinziep immer noch um das Projekt mit der Mutationsgeschichte, die ich aber inzwischen implementieren konnte.

Ich wollte gerde eine neue Klasse 'Aktion' dem Charakter hinzufügen, aber jetzt regnet es nur noch von compilererror:

Zitat

error C2001: Zeilenvorschub in Konstante

Die MSDN schreibt nur was zu Zeilenvorschüben bei strings, hier wird der Fehler genau in der Datei "Aktion.cpp" in der ersten Zeile angestrichen:

C-/C++-Quelltext

1
#include "Aktion.h

Ich kann mir nicht annähernd vorstellen, was da falsch ist.
Hier noch die "Aktion.h"

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#ifndef AKTION_H
#define AKTION_H

#include <string>
#include "Charakter.h"

class Aktion
{
   public:
             ...
   private:
             ...
};

#endif // AKTION_H


Damit aber nicht genug. Aus mir unvorstellbaren Gründen erkennt er die Klasse Aktion überhaupt nicht, denn in "Charakter.h" gibt er mir gleich den nächsten Fehler an:

Zitat

error C2065: 'Aktion': nichtdeklarierter Bezeichner + Folgefehler

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
#ifndef CHARAKTER_H
#define CHARAKTER_H

#include <string>
#include <vector>
#include "..."
#include "Aktion.h"
#include "..."
#include "..."
#include "..."

class Charakter  :public AbstrakteKlasse
{
public:
        enum Rasse;
        enum Klasse;
private:
        ...
        std::vector<Aktion*> vecAktionen;  //hier C2065

        ...
public:
    enum Rasse
    {
        ...
    };
    Rasse rasse;

    enum Klasse
    {
        ...
    };
    Klasse klasse;

};

#endif // CHARAKTER_H


Wenn hier jetzt schluss gewesen wäre, hätte ich es noch verstanden. Doch jetzt schmeißt er hier ein Problem vor, das nie zuvor dagewesen war und eigentlich auch gar keinen Sinn ergibt:

Zitat

warning C4240: Nicht dem Standard entsprechende Erweiterung: Zugriff auf 'Charakter::Rasse' nun als 'private' definiert, wurde zuvor als 'public' definiert

ich habe alles richtig, wo denkt der denn, dass ich da was privat mache. Oder ist das nur ein Folgefehler von dem C2065. Das geht aber eigentlich auch nicht, denn dann müsste er die privaten Member, die danach noch kommen, auch als Fehler interpretieren.
Dem C4240 folgen dann so nette sachen wie:

Zitat

error C2143: Syntaxfehler: Es fehlt ';' vor '{'

und alle enum-Elemente sind natürlich alle falsch bzw nicht deklarierte Bezeichner.
Letzendlich mekert er dann noch an allen folgenden { und } herum.

So ich glaube das reicht erstmal, denn soweit ich das überblicken kann, sind die restlichen Fehler darauf begründet, dass das Klassenkonzept von Aktion angeblich gar nicht stimmt...:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
#ifndef AKTION_H
#define AKTION_H

#include <string>
#include "Charakter.h"

class Aktion // error C2143: Syntaxfehler: Es fehlt ';' vor '{'

{
public: ....


Stehe gerade so ziemlich auf der Leitung, was ich hier falsch gemacht habe. Ok, mein verdacht ist, dass ich Aktion.h und Charakter.h gegenseitig includiere. sowas darf doch aber keine Probleme bereiten, habe erst vorgestern gelesen, dass das geht.

2

01.08.2008, 15:32

Da haste wohl ein Anführungeszeichen vergessen?

C-/C++-Quelltext

1
#include "Aktion.h

Viktor

Alter Hase

  • »Viktor« ist der Autor dieses Themas

Beiträge: 533

Wohnort: Ludwigshafen

Beruf: Student

  • Private Nachricht senden

3

01.08.2008, 16:06

wie peinlich :oops:
aber das löst nur die sache mit

Zitat

error C2001: Zeilenvorschub in Konstante


die anderen fehler bleiben...

edit:
ok, anscheinend stimmt das mit der gegenseitigen includierung nicht....
kaum ist das #include "Charakter.h" auskommentiert, sind alle Fehler weg. nat. entstehen neue, da ja kein Charakter meh in der Klasse mehr genuzt werden kann.
verdammt, alles scheint als muss ich das anders machen.

hm...erledigt? naja, wie auch immer...eigentlich könnte der thread weggeschissen werden...oder als meilenstein der dümmsten fehler in die geschicht eingehen...

Werbeanzeige