我想将以下代码从c#移植到c ++ / cli:
class MyClass : IEnumerable<int> { ... }
我试过
class ref class MyClass : IEnumerable<int>
但它似乎没有起作用。
答案 0 :(得分:1)
C ++有多种类型的继承。不要忘记指定它,例如:
ref class MyClass : public IEnumerable<int>
{ };
在C ++ / CLI中,我经常发现自己在接口实现中拼写出完整的命名空间。 E.g:
ref class MyClass :
public MyCompany::MyProject::MyComponent::IMyInterface
{ };
如果您的类实际上没有实现提供的接口,您(当然)也会收到错误。并且您将要从类声明中删除^
。您从接口继承,而不是从GC Handle继承到该接口的实例。
答案 1 :(得分:1)
假设您的代码正是您尝试编译的代码,那么您还需要额外的class
。它应该只是ref class
,而不是class ref class
。另外,不要忘记将任何C#using
语句翻译成C ++ using namespace
,即:using namespace System::Collections::Generic
。