Referenz 2er Klassen aufeinander mit Functioncalls ( Visual C++ als IDE)



  • Hallo , ich brauche 2 Klassen die miteinander verbunden sind und die sich gegenseitig Funktionen aufrufen müssen.
    Die eine Richtung ( mb -> ma ) ist kein Problem aber wenn ich aus der Class ma
    die Klasse mb Triggern möchte bekomme ich immer den Fehler :Verwendung des undefinierten Typs "Typ"

    Eigentlich will ich nur eine Möglichkeit haben, das sich zwei Klassen kennen und gegenseitig aufrufen können.

    Hier der Code:

    ////////////////////////////////////////////////////////////////////////////
    // Forward Deklaration
    class mb;
    
    class ma
    {
    	friend class mb;
    public:
    	ma();
    	int ausgabe;
    	int mein(void);
    	int Callb(void);
    	void SetParent(mb *aptrb);
    protected:
    	mb *_ptrb;
    };
    int ma::Callb()
    {
    	int	lreturn = 0;
        mb *lptr = _ptrb;
    	//lreturn =  lptr->richtig();            
    	//lreturn =  (*lptr).richtig();    <-- Fehler: Hier geht das nicht
    	return lreturn;
    }
    void ma::SetParent(mb *aptrb)
    {
    	_ptrb = aptrb;
    }
    ma::ma()
    {
    	int a = 2;
    }
    int ma::mein()
    {
    	return ausgabe;
    }
    ////////////////////////////////////////////////////////////////////////////
    class mb
    {
    public:
    	mb();
    	~mb();
    	void tuewas(void);
    	int richtig(void);
    	void SetParent(ma *aptra);
    protected:
    	ma *ptra;
    };
    int mb::richtig()
    {
    	return 500;
    }
    void mb::SetParent(ma *aptra)
    {
    	ptra = aptra;
    }
    mb::mb()
    {
    	int a = 2;
    }
    mb::~mb()
    {
    	int b = 2;
    }
    void mb::tuewas()
    {
    	int a = 2;
    	// A aufrufen
    	ma  *p = ptra;
    	if ( p != 0 ) 
    	{
    		a = p->mein();
    		a = a + 3;
    		p->Callb();
    
    	}
    }
    ////////////////////////////////////////////////////////////////////////////
    


  • Hallo,
    Wenn du aus der Klasse ma auf geschütztde oder private Elemente von mb zugreifen möchtest solltest du auch ma in mb als friend deklarieren...

    Caipi


Anmelden zum Antworten