【问题标题】:Why does gcroot return System^?为什么 gcroot 返回 System^?
【发布时间】:2013-08-01 14:46:01
【问题描述】:

我有以下代码:

Internal::ManagedInputData ^getManagedInputData() const { return mInputData; }

private:
    gcroot<Internal::ManagedInputData^> mInputData;

无论出于何种原因,我都会收到编译时错误:

error C2440: 'static_cast' : cannot convert from 'System::Object ^' to
'Internal::ManagedInputData ^'

如果我注释掉那个 getter,错误就会消失。

我几个小时都无法弄清楚问题出在哪里,请有人帮忙。

【问题讨论】:

    标签: c++-cli


    【解决方案1】:

    以下代码编译没有任何错误:

    #include <gcroot.h>
    namespace Foo
    {
      public ref class ManagedInputData { };
    
      class UnmanagedClass
      {
      public:
        ManagedInputData^ getManagedInputData() const { return m_ManagedInputData; }
      private:
        gcroot<ManagedInputData^> m_ManagedInputData;
      };
    }
    int main()
    {
      Foo::UnmanagedClass u;
      Foo::ManagedInputData^ m = u.getManagedInputData();
    }
    

    所以我看不出问题...也许您需要显示更多代码...

    另见gcroot的文档

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-13
      • 1970-01-01
      • 2016-02-21
      • 1970-01-01
      相关资源
      最近更新 更多