为什么 C++/CLI 编译器很容易与符号混淆?

发布于 2024-08-06 12:10:08 字数 480 浏览 2 评论 0原文

这是我的代码:

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

儭儭莪哋寶赑 2024-08-13 12:10:08

鉴于您的命名空间 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?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文