Хорошо, вам нужно внести несколько изменений в образец вашего инструктора, чтобы он скомпилировался.
Я предполагаю, что вы включили четыре заголовка, необходимые для компиляции. Я рекомендую вам использовать только следующие четыре символа из std
namespace
, а не весь лот. Лично я предпочитаю ссылаться на std::string
в моем коде.
using std::string;
using std::ostream;
using std::list;
using std::endl;
В любом случае, необходимо исправить только следующие три строки:
void dir_traverse(string& path, ostream& out)
Должно быть ...
void dir_traverse(const string& path, ostream& out)
Потому что позже вы передаете временный код при рекурсивном вызове функции.
child_directories.push_back(dir_entry_d_name);
Должно быть ...
child_directories.push_back(dir_entry->d_name);
Это похоже на опечатку!
dir_traverse(&path + "/" + *it, out);
Должно быть ...
dir_traverse(path + "/" + *it, out);
Это тоже похоже на опечатку. Здесь вы создаете временную path
string
, о которой я упоминал ранее. Это должно быть передано как ссылка const
(поскольку она не передается по значению).
Чем больше вы будете практиковаться, тем больше вы будете настроены на сообщения об ошибках вашего компилятора!
Удачи!