이 실제로 내 강사가 우리와 함께 제공했던 프로그램은 내가 그것을 적어도 컴파일 얻기 위해 지금까지 몇 가지 변경했습니다, 함께 작업하는 것입니다 :오류 : 변수 또는 필드 선언 무효
#include <dirent.h>
#include <errno.h>
#include <stdio.h>
#include <cstdlib>
#include <iostream>
#include <cctype>
#include <cstdio>
#include <string>
#include <list>
using namespace std;
std::string makeString();
std::string path= "/";
DIR*dirp;
struct dirent*direntp;
std::list<string> child_directories;
void dir_traverse(&path, ios::out){
list<string> child_directories;
DIR*dirp = opendir(path.data());
struct dirent*dir_entry = readdir(dirp);
while(dir_entry !=null){
unsigned char d_type = dir_entry->d_type==DT_OIR?'D' : 'R';
if(d_type == 'D'){
if(dir_entry->d_name[0]!= '.')
{
child_directories push_back(dir_entry_d_name);
}
}
out<<'\t'<<d_type<<":"<<dir_entry->d_name<<endl;
dir_entry= readdir(dirp);
}
list<string>::iterator it = child_directories.begin();
while(it! = child_directories.end())
{
dir_traverse(&path + "/" + *it, out);
it++;
}
closedir(dirp);
}
내가 얻을 dir_traverse 함수를 참조 할 때 제목에 오류가 있습니다. 나는 그 문제를 일으키는 원인과 그 이유를 알아내는 것에 관심이 많다. 내가 지금이 순간에 얻지 못하는 기능에서 일어나고있는 것의 절반은 아마도이 컴파일 문제를 가지고있는 이유 일 것입니다. 단지 C/C++ 아직 :)
감사
을에 속도를하지 최대편집 :
void dir_traverse(string& path, ostream& out){
list<string> child_directories;
DIR*dirp = opendir(path.data());
struct dirent*dir_entry = readdir(dirp);
while(dir_entry !=NULL){
unsigned char d_type = dir_entry->d_type==DT_DIR?'D' : 'R';
if(d_type == 'D'){
if(dir_entry->d_name[0]!= '.')
{
child_directories.push_back(dir_entry_d_name);
}
}
out<<'\t'<<d_type<<":"<<dir_entry->d_name<<endl;
dir_entry= readdir(dirp);
}
list<string>::iterator it = child_directories.begin();
while(it != child_directories.end())
{
dir_traverse(&path + "/" + *it, out);
it++;
}
closedir(dirp);
}
인수가 잘못된 것을 제외하고, 함수 정의처럼 보이는
컴파일러가 오류를 표시하는 코드의 줄을 표시하십시오. –
'dir_traverse()'함수의 헤더는 당신이 그것을 변경하기 전에 * 같았습니까? 뭔가 더'void dir_traverse (const std :: string & path, std :: ostream & out)'과 같은 것? – Johnsyweb
네, 그게 무엇에 가깝습니다 : void dir_traverse (string path, ostream & out) – user975044