Fehlermeldung
-
Hallo leute finde beim folgenden code meinen Fehler nicht:
Header:
#ifndef CKOORDINATE_H_ #define CKOORDINATE_H_ #include <string.h> class CKoordinate{ private: int m_x = 0; int m_y = 0; public: CKoordinate(int x = 0, int y = 0); CKoordinate(CKoordinate& origin); ~CKoordinate(); void print(); bool move( int x, int y); bool minus(int x, int y); friend std::ostream& operator <<(std::ostream& out,CKoordinate& c); }; std::ostream& operator <<(std::ostream& out,CKoordinate& c); #endif /* CKOORDINATE_H_ */
cpp
#include<iostream> #include "CKoordinate.h" using namespace std; CKoordinate::CKoordinate(int x, int y){ if( 0 <= m_x <= 100){ m_x = x; } else cout << " error " << endl; m_x = 0; if( 0 <= m_y <= 100){ m_y = y; } else cout << " error " << endl; m_y = 0; }
Hier wird Fehler angezeigt im Header:
int m_x = 0;
int m_y = 0;Description Resource Path Location Type
ISO C++ forbids in-class initialization of non-const static member 'm_x' CKoordinate.h / line 14 C/C++ Problem
ISO C++ forbids in-class initialization of non-const static member 'm_y' CKoordinate.h / line 15 C/C++ Problem
ISO C++ forbids initialization of member 'm_x' [-fpermissive] CKoordinate.h / line 14 C/C++ Problem
ISO C++ forbids initialization of member 'm_y' [-fpermissive] CKoordinate.h / line 15 C/C++ Problem
making 'm_x' static [-fpermissive] CKoordinate.h / line 14 C/C++ Problem
making 'm_y' static [-fpermissive] CKoordinate.h / line 15 C/C++ ProblemKönnt ihr mir helfen?
-
Initialisierung von Klassenmembern direkt in der Deklaration geht erst ab C++11.
-
Dein Compiler unterstützt den C++11 Standard nicht. Die Fehlermeldungen sehen nach clang oder gcc aus, möglicherweise funktioniert --std=c++11.
-
Ausserdem:
#include <string.h>
Wozu? Du brauchst das nirgends. Ohnehin wäre
<cstring>
oder<string>
angebrachter, da C++-Header.CKoordinate(CKoordinate& origin); ~CKoordinate();
Tu das weg. Wenn Regel der Grossen Drei, dann richtig. In dem Fall reicht aber der normale Konstruktor. Kopierkonstruktoren nehmen zudem eine Const-Referenz.
CKoordinate
Das C ist unnötig, siehe hier.
Konsistente Einrückung und Klammernsetzung in der .cpp-Datei wäre auch nicht das Schlechteste...
-
DIe struktur vom header muss ich leider so lassen ,da der Header so nach der Aufgabe aussehen soll.
Ich benutze eclipse , wisst ihr wie ich die Fehlermeldung weg bekomme ?
-
Wer lesen kann ist klar in Vorteil.
-
Wenn du absolut gar nichts am Header verändern darfst, musst du einen anderen (C++11-fähigen) Compiler verwenden.