错误 C3224:'System::Nullable':没有重载泛型类'1'泛型类型参数



我试图使用Nullable<bool>作为c++/CLI中的tribool(视为bool?在c#)。我从下面的函数声明中得到这个奇怪的错误消息:

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——非通用的和通用的。当你真正想使用的是后者时,你的using声明将前者引入了作用域。

不幸的是,c++/CLI的一个限制是,当存在另一个具有相同名称的非泛型类型时,不能使用using声明将泛型类型引入作用域。您在这里唯一的实际选择是完全限定类型名称或使用using 指令而不是using声明(即using namespace System;)。

最新更新