C++ / C# Wrapper Klasse



  • Hallo zusammen!
    Ich schreibe gerade an einem Wrapper um C++ (unmanaged) Code in C# (managed) Code verwenden zu können. Ich stehe aber nun vor folgendem Problem:
    Ich habe eine unmanaged C++ Klasse A (vereinfacht) welche im Konstruktor eine Referenz auf Klasse B enthält

    class A
    {
    public: 
    A(const B& pB);
    }
    

    Mein Wrapper sieht bisher folgendermaßen aus für diese Klasse (vereinfacht):

    public ref class WA
    {
    public:
    WA() : m_pA(new A());
    private:
    A* m_pA;
    }
    

    Wie bekomm ich denn nun die Referenz auf die Klasse B hin?? Meine bisherigen Versuche sind irgendwie alle kläglich gescheitert 😉

    Ich hoffe es kann mir bei diesem kleinen Problem jemand weiterhelfen... besten Dank!



  • oops /ignore



  • class B;
    
    class A
    {
    public:
        explicit A(const B& b)
            : b_(b)
        { }
    
        void f() { }
    
    private:
        A(const A&);
        A& operator=(const A&);
    
        const B& b_;
    };
    
    class B
    {
    };
    
    ref class WrapperA
    {
    public:
        explicit WrapperA(const B& b)
            : a_(new A(b))
        { }
    
        ~WrapperA()
        {
            delete a_;
        }
    
        void f()
        {
            a_->f();
        }
    
    private:
        A* a_;
    };
    
    int main()
    {
        B b;
        WrapperA^ wa = gcnew WrapperA(b);
        wa->f();
    }
    

Anmelden zum Antworten