我正在尝试使用Nullable<bool>
作为 C++/CLI 中的 tribool(在 C# 中视为 bool?)。我从以下函数声明中收到这个奇怪的错误消息:
static IList<Modification^>^ modifications(double mass,
double tolerance,
Nullable<bool> monoisotopic,
Nullable<bool> approved,
Site site,
Position position,
Classification classification,
Nullable<bool> hidden);
我有正确的 using 语句将类型纳入范围。每次使用 Nullable 都会发生错误:
error C3224: 'System::Nullable' : no overloaded generic class takes '1' generic type arguments
我也尝试过Nullable<System::Boolean>
但得到同样的错误。如果我使用完全限定名称 System::Nullable ,错误就会消失...但为什么?!
最佳答案
有两个不同的 System::Nullable
-- a non-generic one和 a generic one 。当您真正想要使用后者时,您的 using 声明将前者纳入范围。
不幸的是,C++/CLI 的一个限制是,当存在另一个同名的非泛型类型时,无法使用 using 声明将泛型类型引入作用域。这里唯一真正的选择是完全限定类型名称或使用 using 指令而不是 using 声明(即 using namespace System;
)。
关于.net - 错误 C3224 : 'System::Nullable' : no overloaded generic class takes '1' generic type arguments,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7042178/