Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/147.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 错误:无法转换‘;dirent*’;至‘;搜索目录(std::string,std::list<;start\u touring\u info*>;,bool)::direct*&x2019;_C++_Gcc_Dirent.h - Fatal编程技术网

C++ 错误:无法转换‘;dirent*’;至‘;搜索目录(std::string,std::list<;start\u touring\u info*>;,bool)::direct*&x2019;

C++ 错误:无法转换‘;dirent*’;至‘;搜索目录(std::string,std::list<;start\u touring\u info*>;,bool)::direct*&x2019;,c++,gcc,dirent.h,C++,Gcc,Dirent.h,我正在尝试编译这个项目 但gcc抛出了一个奇怪的错误: RealTimeBattle_reloaded/RealtimeBattle/original_gtk/src/Various.cc:473:30: error: cannot convert ‘dirent*’ to ‘search_directories(std::string, std::list<start_tournament_info_t*>&, bool)::direct*’ in assignment

我正在尝试编译这个项目

但gcc抛出了一个奇怪的错误:

RealTimeBattle_reloaded/RealtimeBattle/original_gtk/src/Various.cc:473:30: error: cannot convert ‘dirent*’ to ‘search_directories(std::string, std::list<start_tournament_info_t*>&, bool)::direct*’ in assignment
       while( NULL != ( entry = readdir( dir ) ) )
realtimeball\u重新加载/realtimeball/original\gtk/src/variable.cc:473:30:错误:无法将分配中的“dirent*”转换为“search\u目录(std::string,std::list&,bool)::direct*”
while(NULL!=(entry=readdir(dir)))
源代码是:

void
search_directories( string directory,
                    list<start_tournament_info_t*>& tour_list,
                    const bool check_robots )
{
  bool err_in_file = false;
  DIR* dir;
  if( NULL != ( dir = opendir(directory.c_str()) ) )
    {
      struct dirent* entry;
      while( NULL != ( entry = readdir( dir ) ) )
        {
          string full_file_name = directory + entry->d_name;
          bool res = false;
          if(check_robots)
            res = check_if_filename_is_robot(full_file_name, &err_in_file);
          else
            res = check_if_filename_is_arena(full_file_name, &err_in_file);
          if(res)
            {
              start_tournament_info_t* info;
              info = new start_tournament_info_t(0, false, full_file_name, "");
              tour_list.push_back( info );
            }
        }
      closedir(dir);
    }
}
void
搜索目录(字符串目录,
列表和旅游列表,
康斯特布尔检查(机器人)
{
bool err_in_file=false;
DIR*DIR;
if(NULL!=(dir=opendir(directory.c_str()))
{
结构方向*条目;
while(NULL!=(entry=readdir(dir)))
{
字符串full\u file\u name=目录+条目->文件名;
bool res=假;
如果(检查机器人)
res=检查文件名是否为机器人(完整文件名和错误文件名);
其他的
res=检查文件名是否为(完整文件名和错误文件名);
如果(res)
{
开始比赛信息;
信息=新开始的比赛信息(0,错误,完整文件名“”;
巡更列表。推回(信息);
}
}
closedir(dir);
}
}

我对日志感到非常困惑。

原始版本没有使用CMake:

这可能是CMake构建系统的不完整端口

这里发生的事情是,代码取决于编译时定义的宏


将“#define HAVE_DIRENT_H”放在variable.cc的顶部可能会使该部分代码编译。。。但问题可能不止一个。

您确定您发布的代码和错误与您在本地看到的匹配吗?您曾经两次写到错误引用的是
direct
,而不是
dirent
,但是您发布的代码没有使用前一种类型。原始代码中是否存在这种拼写错误?如果没有,请生成并发布。