我有以下代码:
Internal::ManagedInputData ^getManagedInputData() const { return mInputData; }
private:
gcroot<Internal::ManagedInputData^> mInputData;
无论出于什么原因我都遇到编译时错误:
error C2440: 'static_cast' : cannot convert from 'System::Object ^' to
'Internal::ManagedInputData ^'
如果我注释掉了getter,那么错误就会消失。
我无法弄清楚问题是几个小时,有人请帮忙。
答案 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
的文档