首页 > 解决方案 > operator '^': 所有操作数必须使用 FileInfo 具有相同的枚举类型

问题描述

我正在使用列表框做某事,但在尝试扫描文件时遇到了麻烦

这是代码:

private: System::Void simpleButton20_Click(System::Object^  sender, System::EventArgs^  e) {
    this->scan->Items->Clear();
    try {
        DirectoryInfo^ info = gcnew DirectoryInfo(Environment::GetFolderPath(Environment::SpecialFolder::UserProfile) + "\AppData\Roaming\skypedir\recievedfiles");
        //FileInfo^ info2 = gcnew FileInfo(SearchOption::AllDirectories);
        FileInfo^ info2 = gcnew FileInfo(info->GetFiles^("*jar*", SearchOption::AllDirectories));
        this->scan->Items->Add(info2->FullName);
    }
    catch(Exception^ Exe){
        MessageBox::Show(Exe->ToString());
    }
}

我每次都收到错误“运算符'^':所有操作数必须具有相同的枚举类型” 。

标签: c++-cli

解决方案


您收到的错误是由于您在 GetFiles 之后键入的运算符 '^'。你不需要它。但它不会解决你的问题。因为,DirectoryInfo::GetFiles 返回一个 FileInfo 的数组。因此,您不能使用 GetFiles 创建 FileInfo 对象。你应该这样做;

DirectoryInfo^ info = gcnew DirectoryInfo(Environment::GetFolderPath(Environment::SpecialFolder::UserProfile) + "\\AppData\\Roaming\\skypedir\\recievedfiles");
array<FileInfo^>^ fileInfoArray = info->GetFiles("*jar*", SearchOption::AllDirectories);
for each(FileInfo^ info2 in fileInfoArray)
{
   this->scan->Items->Add(info2->FullName);
}

推荐阅读