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++ Problem

    Kö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.


Anmelden zum Antworten