Gegensetige Abhänging keit von Klassen?



  • d.h. wenn ich den CStor in ne CPP auslagere, dann ist das problem weg?



  • Vermutlich ja (wobei ein explizit angegebenes 'inline' auch schon ausreicht)



  • jetzt kommt fehler C2514: klasse hat keine konstukoren..

    es reicht doch wenn ich

    #include "B.h"
    class A{
    ..
    .
    .
    B *p= new B(this);
    
    };
    

    weul in beim erzeugen von ner B instaznt kommt eben der Fehler...



  • Womöglich hast du die Reihenfolge der #includes durcheinandergeworfen, zeig doch mal beide Dateien.

    (btw, nutzt du eigentlich Include Guards?)

    PS: Und ich hoffe, diese Anweisung steht im Inneren einer Methode von A.



  • BorisDieKlinge schrieb:

    jetzt kommt fehler C2514: klasse hat keine konstukoren..

    es reicht doch wenn ich

    #include "B.h"
    class A{
    ..
    .
    .
    B *p= new B(this);
    
    };
    

    weul in beim erzeugen von ner B instaznt kommt eben der Fehler...

    dasd idzt dovch volkmmen klar ein mas hnse reiht eignetluc...

    grußs,
    simn2



  • Simon2 schrieb:

    dasd idzt dovch volkmmen klar ein mas hnse reiht eignetluc...

    😃 👍



  • ja benutze include Guards.

    Eine Klasse:

    // header
    #pragma once
    
    // CProcPaths command target
    #include "ProcGraph.h"
    
    //class CProcGraph;
    
    //extern class CProcGraph;
    
    class CProcPaths : public CObject{
    
    	CProcGraph* m;
    public:
    	inline CProcPaths(CProcGraph *p);// : m(p) {};
    	CProcPaths(){}
    
    	virtual ~CProcPaths();
    };
    //CPP
    
    #include "ProcPaths.h"
    
    //class CProcGraph;
    
    // CProcPaths
    
    CProcPaths::CProcPaths(CProcGraph *p) : m(p){
    
    	int k= p->GetSize();
    
    }
    

    Die Andere klassse:

    #include "ProcPaths.h"

    class CProcGraph : public CObject{
    
    	DECLARE_DYNAMIC(CProcGraph)
    
    public:
    .
    .
    .
    .
    	CProcPaths *m_pPaths;
    public:
    //Konstruktor
    
    	CProcGraph(int iNodes=0) : m_iSize(iNodes){
    
    		//Checken
    		ASSERT(iNodes>0);
    
    		//Knoten Laden
    		LoadNodes(iNodes);
    
    		//Prozesspfade erzeugen
    	//	this->m_pPathes= new CProcPaths(this,0,iNodes);
    		m_pPaths= new CProcPaths(this);
    
    	}
    

    .
    .
    .
    };

    die beide klassen sind gegenseitig abhängig



  • Wenn du 'inline' benutzen willst, dann bitte an der richtigen Stelle 😉 (schau dir mal meinen ersten Beitrag hier an)

    @Simon: Was gab's denn gestern abend zu feiern 😃



  • ohne inline gehts auch nich... er kennt in CProcGraph die CProcPath klasse nicht, obowhl ich sie ja includiere... ??? ich blicks nich mehr

    Wenn ich aus der CProcPaths klasse die CProcGraph zeiger und rausenhem dann läufts.. die gegenseitige abhöängig keit macht ihm woh zu schaffen...

    der compiler weis wohl nich was zuerst da war das huhn oder das ei...



  • BorisDieKlinge schrieb:

    der compiler weis wohl nich was zuerst da war das huhn oder das ei...

    Genau das ist das hüpfende Komma. Pack mal in die ProcPath.h die Forward-Deklaration und in die ProcPath.cpp das #include "ProcGraph.h" , dann sollte die zyklische Abhängigkeit eigentlich aufgedröselt sein.



  • CStoll schrieb:

    ...
    @Simon: Was gab's denn gestern abend zu feiern 😃

    Was heißt hier gestern ? Heute ist doch "free-orthography-day" (oder wie Boris sagen würde "fre.orphpganü-da") 😃

    Gruß,

    Simon2.



  • @Simon: "fre.orphpganü-da" hehe.. ne das passt nich so ganz. Zum Beispiel das "ü" ist zu weit weg vom "y" auf der tastatur"

    ich verfehle nur tasten, und meine leertasten sind nich oft syncron mit der wort trennung!!


Anmelden zum Antworten