Bidirektionale Beziehung



  • Hallo,
    ich habe folgendes Problem, ich muß eine Klasse in C++/CLI relaisieren, die eine native C++-Klasse aggregiert. Diese muß ein Callback an die C++/CLI senden, muß also eine Komposition zur C++/CLI klasse haben.

    Im folgenden Beispiel sind es 2. native C++-Klassen, aber dann seht ihr was ich meinte (ist bestimmt ein trivialen Problem, allerdings habe ich nicht viel C++-Erfahrung)

    ClassB:

    #pragma once
    
    #include "stdafx.h"
    #include "ClassA.h"
    
    class ClassB
    {
    private:
    	ClassA *cA;
    
    	ClassB()
    	{
    		cA = new ClassA();
    	};
    };
    

    ClassA:

    #pragma once
    
    #include "stdafx.h"
    #include "ClassB.h"
    
    class ClassA
    {
    private:
    	ClassB *cB;
    
    public:
    	ClassA(ClassB *cB)
    	{
    		this->cB = cB;
    	};
    };
    

    Quasi die Headerfiles includen jeweils die andere Headerdatei, jedoch scheint da eine Art endlosschleife zu entstehen, obwohl das Mehrfachausführen doch durch das pragma verhindert werden sollte...

    Wisst ihre wie man das löst? Einer ne Ahnung?

    Vielen Dank im Voraus,

    David



  • Hallo,
    1. Teile deinen Code in *.h und *.cpp Files auf.
    2. Inkludier nur in den *.cpp Files die Header Files die nötig sind.
    3. Benütze in den Header Files Forward Deklarationen wo es geht.

    -> Wenn Du jetzt nicht weisst, was Forward Deklarationen sind, dann benütze die Forum Suche, denn genau dieses Thema wurde schon zur genüge diskutiert.

    Simon



  • danke dir, der Tip reicht mir schon 🙂 Bin halt neu in C++, sorry...


Anmelden zum Antworten