2 Klassen - falsche Erkennung der Attribute



  • Hallo!
    ich habe 2 Klassen: Klasse A und Klasse B
    in Klasse A erzeuge ich ein Objekt der Klasse B. Dazu habe ich die header-datei der klasse b implementiert..

    nur, jetzt erkennt mein compiler die attribute von klasse a nicht und denkt, es wären welche von klasse b, obwohl klasse b keine gleichnamigen attribute hat.

    wisst ihr vielleicht, was ich da falsch mache?

    Danke im Voraus für die Hilfe.



  • Su Chen schrieb:

    in Klasse A erzeuge ich ein Objekt der Klasse B. Dazu habe ich die header-datei der klasse b implementiert..

    😕

    Su Chen schrieb:

    wisst ihr vielleicht, was ich da falsch mache?

    Jetzt im Moment machst du falsch, dass du keinen Code lieferst.



  • hmm.. das darf ich leider nicht..

    aber, wenn du mir verrätst wieso ich 'class' 'Klasse' unerwartet bekomme, könnte ich dir vielleicht ein ähnliches Beispiel von meinem Programm zeigen..
    versuche nämlich mein Programm auf eine einfache Weise nachzubasteln und den Fehler zu reproduzieren..

    die fehlermeldung kommt von hier:

    //Klasse.h (1)
    
    #include <iostream> (3)
    #include "Klasse2.h"
    
    class Klasse
    { //(7)
      Klasse2** mKlasse2;
    
    public:
      Klasse(int maxX,int maxY);
      void setmKlasse2(int row,int col,std::string val);
      std::string getElementvonKlasse2(int row,int col);
    }
    

    Fehlermeldung:
    ...\klasse.h(7) : error C2236: 'class' 'Klasse' unerwartet

    Danke für deine Mühe.



  • Ich nehme an das du ein Semikolon am Ende der Klassendeklaration von Klasse2 vergessen hast (wie auch bei Klasse1).

    grüße



  • ach, danke.. das war mein problem ^^
    zeig dir mal meine klasse2.h:

    //Klasse2.h
    
    class Klasse2
    {
      std::string mStr;
      int Zusatzinfo;
    
    public:
      void setAll(int Info,std::string str);
      int getInfo();
      std::string getmStr();
    };
    

    also es ist so.. ich erstelle in main.cpp eine instanz von klasse und im konstruktor von klasse erstelle ich eine instanz von klasse2 ..
    etwa so:

    Klasse::Klasse(int maxX,int maxY)
    {
    	mKlasse2=new Klasse2[maxX]; //(11)
    
    	for(int=0;i<maxX;i++)
    		mKlasse2[i]=new Klasse2[maxY];
    }
    

    da sagt er mir aber:
    ...\Klasse.cpp(11) : error C2440: '=' : 'class Klasse2 *' kann nicht in 'class Klasse2 ** ' konvertiert werden

    das sollte aber so stimmen, oder?
    ist es eigentlich falsch, wenn ich in Klasse.cpp zwei header-dateien inkludiere?



  • Klasse::Klasse(int maxX,int maxY)
    {
        mKlasse2=new Klasse2*[maxX]; // <-- Du brauchst ein Array von Zeigern, nicht von Objekten!
    
        for(int=0;i<maxX;i++)
            mKlasse2[i]=new Klasse2[maxY];
    }
    


  • juhuu.. danke sehr 🙂
    jetzt hab ich endlich keine fehler.. und es funktioniert 🙂

    danke vielmals.. ich hoffe, jetzt gehts auch im richtigen Programm ^^


Log in to reply