C++ CLR应用声明string数组报错:无存储或类型说明符
解决C++/CLR中声明String数组的问题
嘿,这个问题我熟!你在C++/CLR里声明数组的方式不对,才会报“The declaration has no storage or type specifier”的错,我给你一步步讲清楚怎么改:
问题根源
C++/CLR里的托管类型规则和原生C++、C#都不一样:
- .NET的字符串类型是
System::String^(带^是因为它是托管引用类型),不是原生C++的std::string,也不能直接用C#风格的string - 托管数组必须用
array<>模板来声明,而不是把[]直接跟在类型后面 - C++/CLR里表示空托管引用的是
nullptr,不是C#里的null
修正后的代码
把你的代码改成这样就没问题了:
private: array<System::String^>^ folderFile = nullptr; int selected = 0; int begin = 0; int end = 0;
额外说明
如果你已经写了using namespace System;,可以简化成array<String^>^ folderFile = nullptr;,不用每次都加System::前缀。
另外要是你想直接创建指定长度的数组,还可以这么写:
// 创建一个长度为5的String数组,初始元素都是nullptr array<String^>^ folderFile = gcnew array<String^>(5);
内容的提问来源于stack exchange,提问作者NormX
相关产品推荐
相关产品推荐

