在嵌套的typedef上调用静态函数

时间:2018-01-24 15:13:45

标签: c++-cli

此代码拒绝编译:

#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没有强调代码,因此这可能是编译器错误吗?

1 个答案:

答案 0 :(得分:1)

我之前遇到过这种情况。我解决了这个问题:

typedef contained::type contained_type;
auto b = contained_type::Parse("0");

我称之为编译器错误,但我不是律师。