j ai une classe (1) qui à comme membre
privée une struct(1') dont j ai besoin
dans une autre struct(2') qui elle aussi
est membre privée d une autre classe(2)
bien que j ai declaree dans la classe (1)
la classe (2) comme "friend" ainsi que
la struct (2') , j ai une erreur
a la compilation :
In file included from src/bar.cpp:1:
include/foo.h:25: error: `struct IObject::iObject_t' is private
include/bar.h:32: error: within this context
class foo
{
public:
foo();
~foo();
private:
struct iFoo_t
{
int id;
int toto;
int momo;
int zozo;
};
friend class bar;
friend struct iBar_t;
};
class bar
{
public:
bar();
~bar();
iFoo_t searchiFooT( int id );
int addiFooT( iFoo_t *);
int deliFooT( int id );
private
struct iBar_t
{
int id;
int roro;
int dada;
std::list<iFoo_t*> lstFoot*;
};
};
si je ne fais aucune fonction dans la classe foo
pour l acces a ses donnée membre c est que je ne
veux que l on n puisse acceder a sont contenu que
depuis bar...
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Christophe Brun
Le Sun, 28 Sep 2003 16:05:30 +0200, Geoffroy Baud a écrit:
Bonjour,
j ai une classe (1) qui à comme membre privée une struct(1') dont j ai besoin dans une autre struct(2') qui elle aussi est membre privée d une autre classe(2) bien que j ai declaree dans la classe (1) la classe (2) comme "friend" ainsi que la struct (2') , j ai une erreur a la compilation :
In file included from src/bar.cpp:1: include/foo.h:25: error: `struct IObject::iObject_t' is private include/bar.h:32: error: within this context
Si le type foo:iFoo_t est un type privé au sein de la classe foo, alors il ne peut pas être référencé en dehors des méthodes de cette classe ou des classes amies. Ce qui signifie entre autres qu'il ne peut pas servir de type de retour ou de type d'argument pour une méthode publique ou protégée de la classe foo (ni, a fortiori, d'une classe amie), puisque ces méthodes sont justement faites pour être appelées en dehors de la classe elle-même.
si je ne fais aucune fonction dans la classe foo pour l acces a ses donnée membre c est que je ne veux que l on n puisse acceder a sont contenu que depuis bar...
Il n'est peut-être pas indispensable que le type foo::iFoo_t soit private. Il suffit que les variables membres de la classe foo le soient.
-- Cordialement; Christophe Brun
Le Sun, 28 Sep 2003 16:05:30 +0200, Geoffroy Baud
<geoffroy.baud@wanadoo.fr> a écrit:
Bonjour,
j ai une classe (1) qui à comme membre
privée une struct(1') dont j ai besoin dans une autre struct(2') qui elle
aussi est membre privée d une autre classe(2) bien que j ai declaree dans
la classe (1)
la classe (2) comme "friend" ainsi que la struct (2') , j ai une erreur a
la compilation :
In file included from src/bar.cpp:1:
include/foo.h:25: error: `struct IObject::iObject_t' is private
include/bar.h:32: error: within this context
Si le type foo:iFoo_t est un type privé au sein de la classe foo, alors il
ne peut pas être référencé en dehors des méthodes de cette classe ou des
classes amies. Ce qui signifie entre autres qu'il ne peut pas servir de
type de retour ou de type d'argument pour une méthode publique ou protégée
de la classe foo (ni, a fortiori, d'une classe amie), puisque ces méthodes
sont justement faites pour être appelées en dehors de la classe elle-même.
si je ne fais aucune fonction dans la classe foo pour l acces a ses
donnée membre c est que je ne veux que l on n puisse acceder a sont
contenu que depuis bar...
Il n'est peut-être pas indispensable que le type foo::iFoo_t soit private.
Il suffit que les variables membres de la classe foo le soient.
Le Sun, 28 Sep 2003 16:05:30 +0200, Geoffroy Baud a écrit:
Bonjour,
j ai une classe (1) qui à comme membre privée une struct(1') dont j ai besoin dans une autre struct(2') qui elle aussi est membre privée d une autre classe(2) bien que j ai declaree dans la classe (1) la classe (2) comme "friend" ainsi que la struct (2') , j ai une erreur a la compilation :
In file included from src/bar.cpp:1: include/foo.h:25: error: `struct IObject::iObject_t' is private include/bar.h:32: error: within this context
Si le type foo:iFoo_t est un type privé au sein de la classe foo, alors il ne peut pas être référencé en dehors des méthodes de cette classe ou des classes amies. Ce qui signifie entre autres qu'il ne peut pas servir de type de retour ou de type d'argument pour une méthode publique ou protégée de la classe foo (ni, a fortiori, d'une classe amie), puisque ces méthodes sont justement faites pour être appelées en dehors de la classe elle-même.
si je ne fais aucune fonction dans la classe foo pour l acces a ses donnée membre c est que je ne veux que l on n puisse acceder a sont contenu que depuis bar...
Il n'est peut-être pas indispensable que le type foo::iFoo_t soit private. Il suffit que les variables membres de la classe foo le soient.
-- Cordialement; Christophe Brun
Geoffroy Baud
Christophe Brun wrote: Exellent merci bcp ... je n y avais pas penser.