为什么 C++/CLI 编译器很容易与符号混淆?
这是我的代码:
using namespace System;
using namespace System::Collections;
using namespace System::Collections::Generic;
namespace Tests {
ref class MyCollection : public IEnumerable<int> <----HERE!
例如,C# 编译器将识别出这些命名空间中唯一的 IEnumerable
来自 System::Collections::Generic
。为什么 C++/CLI 编译器不能做同样的事情?除非我输入其全名或至少输入 Generic::IEnumerable
,否则它不会识别它并会引发 C2872 错误:符号不明确。
我在这里错过了什么吗?
Here is my code:
using namespace System;
using namespace System::Collections;
using namespace System::Collections::Generic;
namespace Tests {
ref class MyCollection : public IEnumerable<int> <----HERE!
The C# compiler, for instance, will recognize that the only IEnumerable<T>
it has in those namespaces is from System::Collections::Generic
. Why can't the C++/CLI compiler do the same? Unlesss I type its full name or at least Generic::IEnumerable<int>
, it won't recognize it and will fire a C2872 error: ambiguous symbol.
Am I missing something here?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
鉴于您的命名空间 IEnumerable 不明确,
MS 在 System::Collections 中定义 IEnumerable 和 System::Collections::Generic 其中2 您想要使用您的代码吗?
Given your namespaces IEnumerable is ambiguous
MS define IEnumerable in both System::Collections and System::Collections::Generic which of the 2 do you want your code to use?