2017-04-10 11 views
0

私はこのプロジェクトRealtimebattle reloaded (github)をコンパイルしようとしています。エラー: 'dirent *'を 'search_directory'に変換できません(std :: string、std :: list <start_tournament_info_t *>&bool):: direct * '

しかし、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))) 

とソースコードは次のとおりです。

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); 
    } 
} 

私は、ログと非常に混乱しています。

+0

投稿したコードとエラーは、ローカルに表示されているものと一致していますか?あなたが 'dirent'ではなく' direct'を参照していると二度書いていましたが、前者のタイプは投稿されたコードでは使われていません。そのタイプミスは元のコードに存在しますか?そうでない場合は、[MCVE](http://stackoverflow.com/help/mcve)を生成して投稿してください。 – jerry

答えて

0

オリジナルバージョンはCMakeのを使用していない:https://github.com/ezag/realtimebattle

これはおそらくシステムを構築CMakeのにオーバー不完全ポートです。

ここでは、コードはコンパイル時に定義されているマクロに依存しています。

配置:[#define HAVE_DIRENT_H]をVarious.ccの先頭に配置すると、コードの一部がコンパイルされる可能性がありますが、おそらくその1つの場合よりも多くの問題があります。

関連する問題