ref Klassen miteinander verbinden ?



  • Hallo,

    ich bin grad dabei mein erstes Programm in .Net zu entwickeln, allerdings habe ich noch ein paar Probleme.
    Ich möchte eine Klasse in eine andere Klasse inkludieren, aber ich kriege nur Fehlermeldungen. D.h. die Klasse CVerbinden soll in der Klasse CBearbeiten zur Verfügung stehen.

    Normalerweise müsste doch die Erstellung mit
    CKlassenname ^NeueKlasse = gcnew CKlassenname ;
    reichen, oder???!!!

    #pragma once
    
    namespace XYZ {
    
    using namespace System;
    ... weitere
    
    ref struct srctBenutzerDaten
    {
            String ^m_sBenutzername;
            String ^m_sPasswort;
    };
    
    ref class CVerbinden;
    
    ref class CBearbeiten
    {
    
       public:
    
            public : void StartFunktion()
            {
                 // Fehler !!!!
                 CVerbinden ^verb= gcnew CVerbinden();
    
            }
    
            srctBenutzerDaten m_srctBenutzerDaten;
    
    };
    
    ref class CVerbinden
    {
            public:
    
            void AlleKalenderAnzeigen()
            {
               //Anweisung
            }
    
            static String ^userName ;
    
    };
    
    }; // Ende namespace XYZ
    

    Fehler XYZ::CVerbinden : no appropriate default constructor available



  • Wenn du statt code-tags C++-tags verwendest, wird Syntax-Highlighting angewendet und das Ganze sieht noch schöner aus. 🙂



  • Du musst die *Implementierung* in der cpp-Datei machen und *beiden* h-Dateien der beiden Klassen _vorher_ einbinden!

    Sonst geht da nie, da Du zirkuläre Referenzen hast, die der Kompiler nicht auflösen kann.
    Forward deklarationen kann man nur bei einer Deklaration verwenden, nicht aber um Methode aufzurufen oder eine Instanz zu erzeugen!



  • ich hatte gehofft, das würde so irgendwie gehen, schade.
    Aber ich werd's dann in der .cpp implementieren

    Danke


Anmelden zum Antworten