Gegenseitiges Verwenden von Klassen



  • Ich habe da ein paar Propleme bezüglich gegenseitigem Verwendens von Klassen.

    // RA.h
    
    #ifndef RADEF
    #define RADEF
    
    #include "RB.h"
    
    class RA
    {
    public:
      int i;
    
      int f(RB o);
      int fs(void);
    };
    
    #endif
    
    // RB.h
    
    #ifndef RBDEF
    #define RBDEF
    
    #include "RA.h"
    
    class RB
    {
    public:
      int i;
    
      int f(RA o);
      int fs(void);
    };
    
    #endif
    

    Ich bekomme hierbei immer Fehlermeldungen.
    Wie kann man die beheben?



  • // RA.h
    
    #ifndef RADEF
    #define RADEF
    
    // Kein #include mehr: Problem gelöst und Abhängigkeiten verringert
    
    class RB; // Deklaration: Referenzen und Zeiger auf diesen Typen sind jetzt erlaubt
    
    class RA
    {
    public:
      int i; // Tststs, wer wird denn öffentliche Daten haben? ;P
    
      int f(const RB& o); // Parameter muss deshalb als Referenz übergeben werden
      int fs();
    };
    
    #endif
    


  • Danke! Funktioniert Klasse 😃

    Sollte auch nur eine kleine Testklasse für ein größeres Projekt sein.
    Hat man dadurch eigentlich leichte Geschwindigkeitseinbusen (Rein Informell)?



  • Hängt wohl vom Objekt ab, denke ich... Normalerweise ist by reference (auf ein const-Objekt) aber der übliche Weg, Objekte als Parameter zu übergeben, um unnötige Aufrufe des Copy-Konstruktors zu vermeiden.


Anmelden zum Antworten