我正在尝试将此c#代码转换为c ++ / cli代码:
class MyRange : IEnumerable<int>
{
public IEnumerator<int> GetEnumerator() { return null; }
IEnumerator IEnumerable.GetEnumerator() { return null; }
}
这是我的尝试:
namespace Tests {
public ref class MyRange : System::Collections::Generic::IEnumerable<int> {
private:
virtual System::Collections::IEnumerator^ GetEnumerator() = System::Collections::IEnumerable::GetEnumerator {
return nullptr;
}
virtual System::Collections::Generic::IEnumerable<int>^ GetEnumerator() {
return nullptr;
}
};
}
它给了我很多错误(比如20),我甚至认为把它们放在这里是不值得的。
我已经用Google搜索了所有内容,似乎很多人都遇到了和我一样的问题。
答案 0 :(得分:4)
好的,经过大量的战斗后发现了一些正常的代码:
namespace Tests {
ref class MyCollection : public Generic::IEnumerable<int>
{
public:
virtual System::Collections::IEnumerator^ GetEnumeratorNonGeneric() = System::Collections::IEnumerable::GetEnumerator
{
return GetEnumerator();
}
virtual Generic::IEnumerator<int>^ MyCollection::GetEnumerator()
{
return nullptr;
}
};
}
答案 1 :(得分:2)
使用Managed C ++作为目标语言在Reflector中反汇编C#通常很有帮助,然后从那里转换到C ++ / CLI。