J'ai donc dérivé une classe de struct dirent. C'est ce que ma tête de classe dérivée ressemble: #ifndef Direntry_hpp #define Direntry_hppComment dériver une classe de struct dirent et l'utiliser pour stocker le résultat de readdir()?
#include <dirent.h>
#include <iostream>
using namespace std;
class Direntry : public dirent{
private:
public:
void print(ostream&);
char* name(){ return d_name; }
ino_t inode(){ return d_ino; }
unsigned int type(){ return d_type; }
};
#endif /* Direntry_hpp */
Alors Dans mon code, j'essaie d'utiliser readdir() et mon un objet de classe de la classe ci-dessus pour le stocker. Donc readdir() renvoie struct dirent *. J'ai tout essayé mais je ne peux pas utiliser mon objet de classe pour stocker les résultats de readdir().
for(;;){
//I want to say Direntry *dirEntry but it doesn't work when I try to store the result of readdir().
struct dirent* dirEntry;
if((dirEntry = readdir(dir)) == nullptr) break;
if(params.vFlag && dirEntry->d_type != DT_REG){
cout << setw(12) << dirEntry->d_ino << left << dirEntry->d_name << endl;
} else if(dirEntry->d_type == DT_REG){
cout << setw(12) << dirEntry->d_ino << left << dirEntry->d_name << endl;
Stats stat; //This class is derived from stat in the <sys/stat.h> library and it works.
if(lstat(path, &stat)) fatal("lstat error");
}
}
Alors que la classe Stat est dérivé de et il fonctionne, mais pour une struct dirent raison ne fonctionne pas la façon dont je prévois à. Qu'est-ce que j'ai fait de mal ou est-ce que j'essaie de faire quelque chose qui ne devrait pas être fait?
Edit:
Direntry* dirEntry;
if((dirEntry = readdir(dir)) == nullptr) break;
Le code ci-dessus produit une erreur au moment de la compilation qui dit:
Attribution de 'direntry *' de type incompatible 'struct dirent *'
"une certaine raison struct dirent ne fonctionne pas comme je l'avais prévu" -> Comment a-t-il échoué - afficher la sortie? Qu'est-ce qui était attendu? – chux
Espérons que ce code est pour étudier seulement et ne sera pas utilisé ailleurs ... – 0x0C4
Oui c'est purement pour l'étude du système de fichiers UNIX –