/!\ Problème de classe.

Signaler
Messages postés
5
Date d'inscription
lundi 19 avril 2004
Statut
Membre
Dernière intervention
27 février 2005
-
Messages postés
5
Date d'inscription
lundi 19 avril 2004
Statut
Membre
Dernière intervention
27 février 2005
-
Salut, j'ai un petit problème en c++.

Iterator est un pointeur vers un Item.
FileSystem est une classe dans laquelle est comprise la classe Item.
FileSystem est un friendclass de Item mais je n'arrive pas à prendre l'adresse de la variable _name de mon objet.

Voici la classe Item et FileSystem :

class FileSystem {


public:


typedef enum { DIRECTORY, FILE } FileType;


private:


class Item {
private:
Item(char *_name, FileType _type, Item *_next, Item *_contents);
char *_name;
FileType type;
Item *next, *contents;
friend class FileSystem;
};


Item *head;


public:


typedef Item *Iterator;


FileSystem();
~FileSystem();


Iterator insert(Iterator i, char *name, FileType type);
Iterator find(char *name);
void remove(Iterator i);
Iterator root();
Iterator next(Iterator i);
Iterator contents(Iterator i);
FileType type(Iterator i);
char *name(Iterator i);
bool valid(Iterator i);
};

Voici ma méthode

char FileSystem::*name(FileSystem::Iterator i)
{
return (i._name);
}

voici l'érreur :

request for member '_name' in 'i' wich is of non-aggregate type 'FileSystem::Item'

Que dois-je faire, déférencer, ... ?
Merci pour vos réponse !
A bientôt.

5 réponses

Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
char* FileSystem::name(FileSystem::Iterator i)

{

return (i._name);

}



Ca devrait aller mieux comme ca
Messages postés
5
Date d'inscription
lundi 19 avril 2004
Statut
Membre
Dernière intervention
27 février 2005

J'ai changer, mais il me sort toujours, la même erreur ...

L'erreur se situe au niveau du return...

Merci pour ta réponse !!
Messages postés
5
Date d'inscription
lundi 19 avril 2004
Statut
Membre
Dernière intervention
27 février 2005

Personne n'a d'idée ?

jdois pas mettre un truc syle return *(i._name) ???
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
Un iterator est un item* donc tu dois faire i->_name (qui siginifie (*i)._name)
Messages postés
5
Date d'inscription
lundi 19 avril 2004
Statut
Membre
Dernière intervention
27 février 2005

voila ce que j'ai mi. Ca a l'air d'aller :)

char* FileSystem::name(FileSystem::Iterator i)
{
return i->_name;
}

Merci, ces petites erreur de syntaxe ne sont pas facilement repérables.
A+