Grundlegende Frage zu Pointern und Klassen



  • Hallo, ich schreibe momentan ein kleines Simulations-Programm. Da ich MFC-benutze muss ich mich zwangsweise micht Pointern auf Klassen rumärgern. Ich habe mal 2 Ansetze von mir Bildlich dargestellt:

    _________
           | Toolbox|   m_pSystem(2) mit dem übergebenen System-Pointer auf die System-Klasse zugreifen
           |(Child) |------------------------------------------
           |________|                                         |
              ^                                               |
              |                                               |			
              | m_pToolbox System-Pointer übergeben           |
              |                                               |
             _|______________		               _________\/________ 
             | Fenster       |	m_pSystem(1)      |     System      |
             | (Parent)      |--------------------->| (Neben-Klasse)  |
             |_______________|	Fenster kann      |_________________|
                                ebenfalls auf die
                                System-Klasse
                                zugreifen
    
    Fesnter::m_pToolbox->m_pSystem = Fenster::m_pSystem
    
    ################################################################################
    ODER:
    ################################################################################
        _________
        | Toolbox|		
        | (Child)|
        |________|				           
         |		    			           
         |		    			           			
         |   m_pFenster die Daten für die System-Klasse übergeben	
         |		    			         
    _____\/__________                         _________________ 
    |    Fenster    |	m_pSystem           |	  System     |
    |   (Parent)    |----------------------->| (Neben-Klasse)  |
    |_______________|	Fenster übergibt    |_________________|
                         die Daten an die
                         System-Klasse
    
    Toolbox::m_pFenster->DatenÜbergeben(Daten);
    Fenster::DatenÜbergeben(Daten)
    {
    	m_pSystem->Variable = Daten;
    }
    

    Welche dieser Varianten ist richtig? Die 1. wäre natürlich weitaus einfacher, aber ich habe immer einen Debugger-Fehler bekommen. (MSVC++)



  • ich würde 2tere bevorzugen.

    sieht aus wie MDI ........ oder SDI?



  • Das gane ist ein SDI-Projekt. Das Problem bei Variante 2 ist allerdings etwas eigenartig:
    Ich gebe meiner Fenster-Klasse eine Funktion: CallPaint()
    Dann gebe ich meiner Toolbox einen Pointer für meine Fenster-Klasse: CFenster* m_pParent;
    Allerdings muss ich dafür in den Header der Toolbox-Klasse den Header der Fenster-Klasse includen. Jetzt kommt der Fehler beim compilieren: "Fehlendes ';' vor '*'." - Was bei VC++ soviel heißt wie Fenster-Klassen-Header nicht gefunden.



  • wenn du nur einen Zeiger benutzt, musst du nicht die ganze Header einbinden, es reicht wenn du dem Linker mitteilst, dass die Klasse exisitiert

    class CFenster;

    das einfach vor die eigentliche Klasse schreiben
    ich weis jetzt aber nicht ob das dein Problem behebt


Anmelden zum Antworten