managed static member in native Class (+ Vererbung)



  • Hallo Gemeinde,

    ich habe eine XManaged.dll, welche ich in einer native Wrapperklasse nutzen möchte. Alles soweit kein Problem. Bsp:

    #using "XManaged.dll"
    
    int XWrapper::DoSomething()
    {
       XManaged::ManExample^ me = gcnew XManaged::ManExample();
    }
    

    Nun möchte ich XManaged::ManExample^ me als statischen Member definieren, was in etwa folgendermaßen funktionieren könnte:

    ref class XWrapper
    {
    public:
      XWrapper(){}
      ~XWrapper(){}
    
      int DoSomething(){}
      static XManaged::XManaged^ tx;
    };
    

    Das Problem hierbei ist, dass XWrapper von XBase erben soll:

    class XBase
    {
    public:
      XBase();
      ~XBase();
    
      virtual int DoSomething();
    };
    

    Da jedoch eine ref class nicht von einer native class erben kann fällt diese Variante schon mal flach. Wie komme ich nun zu meinem statischen Member und setze gleichzeitig die Vererbungsbeziehung um?



  • Du kannst es nur "Wrappen". Siehe dazu "gcroot"-Template.



  • OK, ich habe es nun folgendermaßen gelöst:

    class XWrapper : XBase
    {
    public:
      XWrapper();
      ~XWrapper();
    
      int DoSomething();
    };
    

    Und im cpp-File:

    static gcroot<XManaged::ManExample^> s_me = gcnew XManaged::ManExample^();
    

Anmelden zum Antworten