代码之家  ›  专栏  ›  技术社区  ›  Ignacio Soler Garcia

如何使用PIMPL从C++/CLI使用C#类

  •  0
  • Ignacio Soler Garcia  · 技术社区  · 12 年前

    我需要使用非托管应用程序中的C#类。假设我有以下C#类:

    public class Managed
    {
        public void Subcribe(int handler)
        {
            ....
        }
    }
    

    然后我创建以下C++/CLI类:

    /// Header
    class Mixed
    {
    public:
        void Subscribe(int handler);
    private:
        class MixedImp;
        MixedImp* m_implementation;
    }
    
    /// CPP
    ref class MixedImp
    {
    public:
        void Subscribe(int handler)
        {
            m_accessor->Subscribe(handler);
        }
    private:
        Managed^ m_accessor;
    }
    
    Mixed::Subcribe(int handler)
    {
        m_implementation->Subcribe(handler)
    }
    

    当这样做的时候,我得到了一个指向不完整类类型的指针。这是不允许的,所以我没有得到什么。我不是一个天生的非托管开发人员,所以如果这个问题有点愚蠢,请原谅我:\

    1 回复  |  直到 12 年前
        1
  •  1
  •   Serj-Tm    12 年前
    #include <vcclr.h>
    
    
    class Mixed
    {
    public:
      void Subscribe(int handler)
      {
        m_accessor->Subscribe(handler);
      }
    private:
      gcroot<Managed^> m_accessor;
    };