begin process at 2008 08 29 22:48:55
1 233 930 membres
450 nouveaux aujourd'hui
14 294 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Accès variable / Class [ Archives / Divers ] (Guillaume)

Accès variable / Class le 14/09/2001 15:47:10

Guillaume
Bonjour, je vous explique le contexte...
J'ai 2 classes :
class TMAC {
public:
void getVAR();
}

et :
class TCX {
public:
int iA;
TMAC macro;
}

Je crée une instance de TCX ...
cx = new TCX;

et pour appeler getVAR je fais naturellement:
cx->macro.getVAR() pas de probleme...

MAINTENANT MON PROBLEME :

quand je crée
TMAC::getVAR() je voudrais pouvoir acceder à iA (de TCX) en sachant que je 'utilise la classe TMAC que pour TCX et si je fais ca c uniquement pour la lisibilité ...(car en fait j'ai pleins d'autres trucs dans les classes et TMAC risque de reservir dans la suite de mon prog ... je sais pas encore)
Aidez moi SVP ...

Re : Accès variable / Class le 14/09/2001 16:47:01

GoldenEye




-------------------------------
Réponse au message : Tes déclarations sont un peu bizarres. En règle générale on déclare private les membres de données ( tels iA et ce même si on s'en sert ailleurs ) et public les fonctions ( telles getVAR(). Je te suggère de déclarer friend la fonction getVAR(). Grosso modo, les fonctions friend ont la capacité d'accéder aux membres private d'une classe.
Pour le code ça devrait être qqch comme ça:

class TMAC {
public:
... ... ... // les fonctions de TMAC sans rapport avec TCX
private:
... ... ... // les données de TMAC ( si il y en a ! )
}

class TCX {
friend int getVAR() { return iA ; } // Renvoie iA de l'objet TCX considéré
public:
... ... // les fonctions de TCX
private:
... ... // les données de TCX
}
Je n'ai pas encore essayé le code parce que je ne sais pas exactement où tu veux en venir. Si ça ne marche toujours pas, poursuis la discussion ( enfin pas trop parce que je suis débutant en POO

GoldenEye
-------------------------------

Bonjour, je vous explique le contexte...
J'ai 2 classes :
class TMAC {
public:
void getVAR();
}

et :
class TCX {
public:
int iA;
TMAC macro;
}

Je crée une instance de TCX ...
cx = new TCX;

et pour appeler getVAR je fais naturellement:
cx->macro.getVAR() pas de probleme...

MAINTENANT MON PROBLEME :

quand je crée
TMAC::getVAR() je voudrais pouvoir acceder à iA (de TCX) en sachant que je 'utilise la classe TMAC que pour TCX et si je fais ca c uniquement pour la lisibilité ...(car en fait j'ai pleins d'autres trucs dans les classes et TMAC risque de reservir dans la suite de mon prog ... je sais pas encore)
Aidez moi SVP ...


Re : Accès variable / Class le 14/09/2001 17:02:39

Guillaume
-------------------------------
Réponse au message :
-------------------------------
oui mais non c pas ca que je veux ...

Je veux dans getVAR() (qui est d'ailleurs declaré dans TMAC) pouvoir faire par exemple printf("%d",iA); (où iA est déclaré dans TCX)

Sinon mes déclarations sont bonnes, je veux pouvoir accéder à iA de l'exterieur ...


-------------------------------
Réponse au message : Tes déclarations sont un peu bizarres. En règle générale on déclare private les membres de données ( tels iA et ce même si on s'en sert ailleurs ) et public les fonctions ( telles getVAR(). Je te suggère de déclarer friend la fonction getVAR(). Grosso modo, les fonctions friend ont la capacité d'accéder aux membres private d'une classe.
Pour le code ça devrait être qqch comme ça:

class TMAC {
public:
... ... ... // les fonctions de TMAC sans rapport avec TCX
private:
... ... ... // les données de TMAC ( si il y en a ! )
}

class TCX {
friend int getVAR() { return iA ; } // Renvoie iA de l'objet TCX considéré
public:
... ... // les fonctions de TCX
private:
... ... // les données de TCX
}
Je n'ai pas encore essayé le code parce que je ne sais pas exactement où tu veux en venir. Si ça ne marche toujours pas, poursuis la discussion ( enfin pas trop parce que je suis débutant en POO

GoldenEye
-------------------------------

Bonjour, je vous explique le contexte...
J'ai 2 classes :
class TMAC {
public:
void getVAR();
}

et :
class TCX {
public:
int iA;
TMAC macro;
}

Je crée une instance de TCX ...
cx = new TCX;

et pour appeler getVAR je fais naturellement:
cx->macro.getVAR() pas de probleme...

MAINTENANT MON PROBLEME :

quand je crée
TMAC::getVAR() je voudrais pouvoir acceder à iA (de TCX) en sachant que je 'utilise la classe TMAC que pour TCX et si je fais ca c uniquement pour la lisibilité ...(car en fait j'ai pleins d'autres trucs dans les classes et TMAC risque de reservir dans la suite de mon prog ... je sais pas encore)
Aidez moi SVP ...



Re : Accès variable / Class le 14/09/2001 19:12:15

GoldenEye




-------------------------------
Réponse au message : OK , je n'avais pas compris ce que tu voulais... Par contre là je ne vois pas vraiment. Je vais essayer de creuser GoldenEye


-------------------------------

-------------------------------
Réponse au message :
-------------------------------
oui mais non c pas ca que je veux ...

Je veux dans getVAR() (qui est d'ailleurs declaré dans TMAC) pouvoir faire par exemple printf("%d",iA); (où iA est déclaré dans TCX)

Sinon mes déclarations sont bonnes, je veux pouvoir accéder à iA de l'exterieur ...


-------------------------------
Réponse au message : Tes déclarations sont un peu bizarres. En règle générale on déclare private les membres de données ( tels iA et ce même si on s'en sert ailleurs ) et public les fonctions ( telles getVAR(). Je te suggère de déclarer friend la fonction getVAR(). Grosso modo, les fonctions friend ont la capacité d'accéder aux membres private d'une classe.
Pour le code ça devrait être qqch comme ça:

class TMAC {
public:
... ... ... // les fonctions de TMAC sans rapport avec TCX
private:
... ... ... // les données de TMAC ( si il y en a ! )
}

class TCX {
friend int getVAR() { return iA ; } // Renvoie iA de l'objet TCX considéré
public:
... ... // les fonctions de TCX
private:
... ... // les données de TCX
}
Je n'ai pas encore essayé le code parce que je ne sais pas exactement où tu veux en venir. Si ça ne marche toujours pas, poursuis la discussion ( enfin pas trop parce que je suis débutant en POO

GoldenEye
-------------------------------

Bonjour, je vous explique le contexte...
J'ai 2 classes :
class TMAC {
public:
void getVAR();
}

et :
class TCX {
public:
int iA;
TMAC macro;
}

Je crée une instance de TCX ...
cx = new TCX;

et pour appeler getVAR je fais naturellement:
cx->macro.getVAR() pas de probleme...

MAINTENANT MON PROBLEME :

quand je crée
TMAC::getVAR() je voudrais pouvoir acceder à iA (de TCX) en sachant que je 'utilise la classe TMAC que pour TCX et si je fais ca c uniquement pour la lisibilité ...(car en fait j'ai pleins d'autres trucs dans les classes et TMAC risque de reservir dans la suite de mon prog ... je sais pas encore)
Aidez moi SVP ...



Re : Accès variable / Class le 15/09/2001 23:32:10

pornik
esc je rêve ou bien je vous vois oublier les points-virgules apres l'} fermente de la classe??

class TMAC {
public:

private:
... ... ...
} ; // <=== ce pt1 de ;


soit g fumé qqch et le ; n'est pa nécessaire, soit c'est un oubli que vous avez fait, soit le compilateur que vous utilisez est très coopératif et s'adapte a ce style d'écriture ;-) nan séieusement je me trompe??



-------------------------------
Réponse au message :
-------------------------------





-------------------------------
Réponse au message : OK , je n'avais pas compris ce que tu voulais... Par contre là je ne vois pas vraiment. Je vais essayer de creuser GoldenEye


-------------------------------

-------------------------------
Réponse au message :
-------------------------------
oui mais non c pas ca que je veux ...

Je veux dans getVAR() (qui est d'ailleurs declaré dans TMAC) pouvoir faire par exemple printf("%d",iA); (où iA est déclaré dans TCX)

Sinon mes déclarations sont bonnes, je veux pouvoir accéder à iA de l'exterieur ...


-------------------------------
Réponse au message : Tes déclarations sont un peu bizarres. En règle générale on déclare private les membres de données ( tels iA et ce même si on s'en sert ailleurs ) et public les fonctions ( telles getVAR(). Je te suggère de déclarer friend la fonction getVAR(). Grosso modo, les fonctions friend ont la capacité d'accéder aux membres private d'une classe.
Pour le code ça devrait être qqch comme ça:

class TMAC {
public:
... ... ... // les fonctions de TMAC sans rapport avec TCX
private:
... ... ... // les données de TMAC ( si il y en a ! )
}

class TCX {
friend int getVAR() { return iA ; } // Renvoie iA de l'objet TCX considéré
public:
... ... // les fonctions de TCX
private:
... ... // les données de TCX
}
Je n'ai pas encore essayé le code parce que je ne sais pas exactement où tu veux en venir. Si ça ne marche toujours pas, poursuis la discussion ( enfin pas trop parce que je suis débutant en POO

GoldenEye
-------------------------------

Bonjour, je vous explique le contexte...
J'ai 2 classes :
class TMAC {
public:
void getVAR();
}

et :
class TCX {
public:
int iA;
TMAC macro;
}

Je crée une instance de TCX ...
cx = new TCX;

et pour appeler getVAR je fais naturellement:
cx->macro.getVAR() pas de probleme...

MAINTENANT MON PROBLEME :

quand je crée
TMAC::getVAR() je voudrais pouvoir acceder à iA (de TCX) en sachant que je 'utilise la classe TMAC que pour TCX et si je fais ca c uniquement pour la lisibilité ...(car en fait j'ai pleins d'autres trucs dans les classes et TMAC risque de reservir dans la suite de mon prog ... je sais pas encore)
Aidez moi SVP ...




Re : Accès variable / Class le 18/09/2001 10:48:44

Lu

Ton problème provient probablement d'une mauvaise conception des tes classes.

Les cas où deux classes ont besoin de se connaître mutuellement ne sont pa ss courants.

Malgré tout, si tu y tiens vraiment :
- si ta relation entre une instance de chacune des deux classes est une relation forte, tu peux définir par exemple l'attribut de TMAX : TCX & TMAX::m_tcx
- si la relation n'existe pas forcément, tu peux éventuellement faire pareil mais avec un pointeur au lieu d'une référence
- en général, le problème que tu me décrit provient d'une mauvaise vision des dépendances ; dans ton cas, pourquoi ne pas passer TCX en pramètre de TMAX::getVar() ? C'est souvent un tort d'avoir peur d'ajouter des paramètres car on risque de se retrouver avec des tas d'attributs qui ne servent qu'à éviter de répéter des paramètres, et qui rendent la classe confuse, mal définie, difficilement utilisable et pleine de bugs.

-------------------------------
Réponse au message :
-------------------------------

Bonjour, je vous explique le contexte...
J'ai 2 classes :
class TMAC {
public:
void getVAR();
}

et :
class TCX {
public:
int iA;
TMAC macro;
}

Je crée une instance de TCX ...
cx = new TCX;

et pour appeler getVAR je fais naturellement:
cx->macro.getVAR() pas de probleme...

MAINTENANT MON PROBLEME :

quand je crée
TMAC::getVAR() je voudrais pouvoir acceder à iA (de TCX) en sachant que je 'utilise la classe TMAC que pour TCX et si je fais ca c uniquement pour la lisibilité ...(car en fait j'ai pleins d'autres trucs dans les classes et TMAC risque de reservir dans la suite de mon prog ... je sais pas encore)
Aidez moi SVP ...



Classé sous : class, accès, getvar, tcx, tmac

Participer à cet échange

Pub



Appels d'offres

Recherche developpeur ...
Budget : 700€
SITE MARCHAND LOCATION...
Budget : 3 000€
SITE MARCHAND POUR HOTEL
Budget : 4 000€

CalendriCode

Août 2008
LMMJVSD
    123
45678910
11121314151617
18192021222324
25262728293031

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Téléchargements

Boutique

Boutique de goodies CodeS-SourceS