You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何此托管数组初始化代码错误?附ListView搜索场景代码

排查C++/CLI托管数组初始化错误(ListView搜索场景)

错误的数组声明及报错

尝试声明用于ListView搜索的托管数组时,出现以下代码错误:

array<ListViewItem^, 128> searchedItems = gcnew array<ListViewItem^>;

编译器报错:

E0070 incomplete type is not allowed
E0079 expected a type specifier

错误原因解析

  1. 固定大小数组语法不匹配:array<T, N>是C++/CLI的固定大小托管数组,初始化时必须明确匹配模板参数中的大小值。你只写了gcnew array<ListViewItem^>未指定大小,编译器无法识别完整类型,触发"incomplete type"错误。
  2. 托管对象引用缺失:所有托管对象(包括数组)必须用^标记跟踪引用,你的声明array<ListViewItem^, 128> searchedItems缺少^,编译器无法识别正确的类型,导致"expected a type specifier"错误。

当前按钮事件代码中的数组问题

你在按钮点击事件里的数组声明同样存在语法错误:

array<ListViewItem^>^ itemsSearched = gcnew array<ListViewItem^>^(listViewMain->Items->Count);

错误点在于gcnew array<ListViewItem^>^(...)多写了一个^,正确的初始化语法不需要这个额外的引用标记。

正确的托管数组声明方式

1. 固定大小数组(编译时确定大小)

若要声明固定大小为128的数组,正确写法为:

array<ListViewItem^, 128>^ searchedItems = gcnew array<ListViewItem^, 128>();
  • 必须为数组类型添加^表示托管引用
  • 初始化时需匹配模板参数中指定的固定大小

2. 动态大小数组(运行时确定大小)

针对搜索场景,数组大小通常需要根据ListView的项数动态确定,应使用不带固定大小参数的array<T>,初始化时传入运行时大小:

array<ListViewItem^>^ itemsSearched = gcnew array<ListViewItem^>(listViewMain->Items->Count);

搜索场景优化建议

由于搜索匹配的数量不确定,使用System::Collections::Generic::List<ListViewItem^>托管列表比数组更灵活,可避免提前分配冗余空间:

private: System::Void button1_Click_1(System::Object^ sender, System::EventArgs^ e) {
    String^ searchString = tbDenominazione->Text;
    System::Collections::Generic::List<ListViewItem^>^ matchedItems = gcnew System::Collections::Generic::List<ListViewItem^>();
    
    for (int i = 0; i < listViewMain->Items->Count; i++) {
        ListViewItem^ currentItem = listViewMain->Items[i];
        if (currentItem->SubItems[1]->Text->Contains(searchString)) {
            matchedItems->Add(currentItem);
        } 
    }
    
    std::cout << "Corrispondenze trovate: " << matchedItems->Count << std::endl;
    
    // 若需转为数组,可直接调用ToArray()方法
    array<ListViewItem^>^ itemsSearched = matchedItems->ToArray();
}

内容的提问来源于stack exchange,提问作者randomizzatore

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 22:02:41