此代码拒绝编译:
#include <vcclr.h>
struct contained
{
typedef System::Int32 type;
};
int main(array<System::String ^> ^args)
{
auto a = System::Int32::Parse("0");
auto b = contained::type::Parse("0");
return 0;
}
失败了
C2510 'type': left of '::' must be a class/struct/union
C3861 'Parse': identifier not found
在auto b
行。但是,如果我将contained::type
绑定到非嵌套的typedef,它可以工作,如果我将System::Int32
更改为我自己的类型,它也可以工作。此外,IntelliSense没有强调代码,因此这可能是编译器错误吗?
答案 0 :(得分:1)
我之前遇到过这种情况。我解决了这个问题:
typedef contained::type contained_type;
auto b = contained_type::Parse("0");
我称之为编译器错误,但我不是律师。