首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >错误:无法将‘dirent*’转换为‘search_directories(std::string,std::list<start_tournament_info_t*>&,bool)::search_directories*’

错误:无法将‘dirent*’转换为‘search_directories(std::string,std::list<start_tournament_info_t*>&,bool)::search_directories*’
EN

Stack Overflow用户
提问于 2017-04-10 09:12:13
回答 1查看 409关注 0票数 0

我正在尝试编译这个项目Realtimebattle reloaded (github)

但gcc抛出了奇怪的错误:

代码语言:javascript
复制
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 ) ) )

源码是:

代码语言:javascript
复制
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);
    }
}

我对日志感到非常困惑。

EN

回答 1

Stack Overflow用户

发布于 2017-04-10 09:32:06

原始版本没有使用CMake:https://github.com/ezag/realtimebattle

这可能是到CMake构建系统的一个不完整的移植。

这里发生的事情是代码依赖于编译时定义的宏。

将'#define HAVE_DIRENT_H‘放在Various.cc的顶部可能会使代码编译……但可能还有更多的问题,而不仅仅是这一个案例。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43313654

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档