为什么gcroot会返回System ^?

时间:2013-07-31 23:43:18

标签: c++-cli

我有以下代码:

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

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

无论出于什么原因我都遇到编译时错误:

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

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

我无法弄清楚问题是几个小时,有人请帮忙。

1 个答案:

答案 0 :(得分:3)

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

#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

的文档
相关问题