以下是我正在尝试的内容:
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
]
我在这里做错了吗?
编辑:这是编译错误吗?
答案 0 :(得分:1)
这是一个有趣的问题。以下两种表示法都可以正常工作
ints->Reverse(ints);
array<int>::Reverse(ints);
正如你所期待的那样。由于typedef引入了同义词,我希望它对你有用,但显然不适用于VC ++ 2008 Express。
答案 1 :(得分:-1)
你应该使用。调用成员函数。 ::仅用于编译时解析。
编辑: 哎呀,我完全误读了你的代码。你应该使用ints.Reverse(),而不是IntArray :: Reverse(ints)。此外,C ++中的.NET类型规则完全可能与C#中的.NET类型相同 - 也就是说,应始终使用该点。