调用cli :: array <int> ::通过C ++ / CLI中的typedef反转</int>

时间:2010-06-02 10:45:31

标签: .net c++-cli typedef

以下是我正在尝试的内容:

typedef cli::array<int> intarray;

int main(){
    intarray ^ints = gcnew intarray { 0, 1, 2, 3 };
    intarray::Reverse(ints);    // C2825, C2039, C3149

    return 0;
}

编译导致以下错误:

.\ints.cpp(46) : error C2825: 'intarray': must be a class or namespace when followed by '::'
.\ints.cpp(46) : error C2039: 'Reverse' : is not a member of '`global namespace''
.\ints.cpp(46) : error C3149: 'cli::array<Type>' : cannot use this type here without a top-level '^'
        with
        [
            Type=int
        ]

我在这里做错了吗?

编辑:这是编译错误吗?

2 个答案:

答案 0 :(得分:1)

这是一个有趣的问题。以下两种表示法都可以正常工作

   ints->Reverse(ints);
   array<int>::Reverse(ints);
正如你所期待的那样。由于typedef引入了同义词,我希望它对你有用,但显然不适用于VC ++ 2008 Express。

答案 1 :(得分:-1)

你应该使用。调用成员函数。 ::仅用于编译时解析。

编辑: 哎呀,我完全误读了你的代码。你应该使用ints.Reverse(),而不是IntArray :: Reverse(ints)。此外,C ++中的.NET类型规则完全可能与C#中的.NET类型相同 - 也就是说,应始终使用该点。