Fehler bei Header



  • #ifndef CKOORDINATE_H_
    #define CKOORDINATE_H_

    #include<iostream>
    using namespace std;
    class CKoordinate(){
    int m_x = 0;
    int m_y = 0;

    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 ostream& operator << (ostream& out ,CKoordinate& c);

    };
    ostream& operator << (ostream& out ,CKoordinate& c); // Fehler Description Resource Path Location Type
    Type 'CKoordinate' could not be resolved CKoordinate.h /CKoordinate line 30 Semantic Error

    #endif /* CKOORDINATE_H_ */

    Kann mir jemand erklären wie ich den Fehler weg bekomme ?



  • Was machen die runden Klammern da

    class CKoordinate(){
    

    ?

    Und entferne "using namespace std;" aus deinem Header - gewöhne dir es gar nicht erst an (auch wenn du im Header dann jeweils "std::" dazuschreiben mußt).

    PS: Packe (demnächst) deinen Code in entsprechende Code bzw. C++ Tags.



  • Wenn ich das using namespace weg mache bekomme ich den Fehler Description Resource Path Location Type
    Type 'ostream' could not be resolved CKoordinate.h /CKoordinate line 22 Semantic Error

    Mit using namespace habe ich keine Fehler ?

    Ich benutze Eclipse .

    Wo soll ich denn genau std:: schreiben ?



  • Hat sich erledigt

    #ifndef CKOORDINATE_H_
    #define CKOORDINATE_H_
    
    #include<iostream>
    class CKoordinate{
    	int m_x = 0;
    	int m_y = 0;
    
    	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_ */
    

  • Mod

    vGibst pdu pin aanderen nSprachen aauch pimmer pan, awelchen nTyp aein nWort vhat, kdamit pes pjeder vweiß?





  • Sepp ich hatte sau schwierigkeiten zu verstehen was du gerade meintest.

    Ich bearbeite ja gerade eine Aufgabe als übung ,vielleicht könnt ihr mir ja helfen .

    Implementieren Sie den Konstruktor mit den vorgegebenen Default-Werten und unter
    Berücksichtigung der vorgegeben Gültigkeitsbereiche der Attribute. Für den Fall, dass ein
    Parameter den Gültigkeitsbereich verletzt, soll eine Warnung ausgegeben werden und das
    Attribut auf den Defaultwert gesetzt werden. Geben Sie die Adresse des angelegten Objektes
    sowie die Werte aller Attribute aus.

    Die Zusicherung die im Uml Diagramm für den Konstruktor gegeben war , war die

    0<= m_x <= 100

    Ich habe mal probiert den Konstruktor zu implementieren , aber es scheint nicht so richtig zu sein .

    Die adresse eines Objektes gibt man ja mit this aus ?

    Aber was soll ich da schreiben , this.x ?

    Das verstehe ich nicht so ganz gerade?

    #include<iostream>
    #include"CKoordinate.h"
    using namespace std;
    
    CKoordinate(){
    
    	if( 0<= m_x <= 100){
    		return true;
    		else(){
    			cout << " Gueltigkeitsbereich verletzt " << endl;
    			m_x = x;
    
    		}
    
    	}
    }
    


  • std::cout << this;
    
    // besser hex:
    std::cout << std::ios::hex << this;
    
    // die member:
    std::cout << m_x;
    std::cout << m_y;
    


  • Ist meine Schleife dann insgesamt so in Ordnung ?

    #include<iostream>
    #include"CKoordinate.h"
    using namespace std;
    
    CKoordinate(){
    
    	if( 0<= m_x <= 100){
    		return true;
    		cout << this << endl;
    		else(){
    			cout << " Gueltigkeitsbereich verletzt " << endl;
    			m_x = x;
    
    		}
    
    	}
    }
    

    Mir wird leider noch dieser Fehler angezigt ,denn ich nicht weg bekomme

    Description Resource Path Location Type
    expected unqualified-id before ')' token CKoordinate.cpp /CKoordinate line 12 C/C++ Problem



  • dt schrieb:

    Ist meine Schleife dann insgesamt so in Ordnung ?

    Schleife?

    dt schrieb:

    // ...
            return true;
    
    // ...
    		else(){
    // ...
    

    return !? Echt jetzt? Was sagt denn dein Compiler dazu!?
    Was sollen die runden Klammern hinter dem else ?



  • Mir werden jetzt nur noch diese Warnungen angezeigt.
    Description Resource Path Location Type
    comparisons like 'X<=Y<=Z' do not have their mathematical meaning [-Wparentheses] CKoordinate.cpp /CKoordinate line 14 C/C++ Problem
    non-static data member initializers only available with -std=c++11 or -std=gnu++11 [enabled by default] CKoordinate.h /CKoordinate line 13 C/C++ Problem
    non-static data member initializers only available with -std=c++11 or -std=gnu++11 [enabled by default] CKoordinate.h /CKoordinate line 14 C/C++ Problem

    Code ist der :

    [/code]
    #include<iostream>
    #include"CKoordinate.h"
    using namespace std;

    CKoordinate::CKoordinate(int x , int y){

    if( 0<= m_x <= 100){

    cout << this << endl;
    }
    else{
    cout << " Gueltigkeitsbereich verletzt " << endl;
    m_x = x;

    }

    };
    [code="cpp"]

    Stimmt es jetzt zumindest inhaltlich ,weil ich lerne gerade für die Klausur ?



  • dt schrieb:

    comparisons like 'X<=Y<=Z' do not have their mathematical meaning [-Wparentheses] CKoordinate.cpp /CKoordinate line 14

    Ja. Und? Was könnte das wohl heißen?

    Der Rest sagt dir daß du bitte mit der Option -std=c++11 kompilieren sollst.

    //edit:

    dt schrieb:

    Stimmt es jetzt zumindest inhaltlich, weil ich lerne gerade für die Klausur?

    Ne. Aber da haperts so dermaßen an Grundlagen, daß man sich fragen muss, ob du in allen Vorlesungen und Übungen gut geschlafen hast.


Log in to reply