0

我有以下代码:

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

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

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

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

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

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

4

1 回答 1

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的文档

于 2013-08-01T06:46:01.193 回答