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:
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:
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:
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:
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.