accès aux membres privés [débutant C++] - C++ - Programmation
Marsh Posté le 29-05-2006 à 13:14:54
t'as essayé en déclarant une classe plutot qu'une struct ?
Marsh Posté le 29-05-2006 à 14:01:18
tu utilises quel compilateur
plusieurs choses en attendant:
- ca ne compile pas directement parce qu'il manque le '#' de l'include.
- ton "using std::endl", c'est n'importe quoi.
- utilises les balises de code.
- l'entete de main est fausse.
- ton code ne compile pas sous vc6, et c'est normal:
Code :
|
Marsh Posté le 29-05-2006 à 14:05:58
Citation : - ton "using std::endl", c'est n'importe quoi. |
comment ca ?
Marsh Posté le 29-05-2006 à 14:19:18
ouai, enfin c'est pas n'importe quoi, juste inutile et surtout 'using std::' c'est toujours mieux que 'using namespace std'
Marsh Posté le 29-05-2006 à 14:27:13
skelter a écrit : ouai, enfin c'est pas n'importe quoi, juste inutile |
Ca montre que le mec a pas compris ce qu'était un namespace.
skelter a écrit : et surtout 'using std::' c'est toujours mieux que 'using namespace std' |
Ah bon ?
Marsh Posté le 29-05-2006 à 14:35:23
_darkalt3_ a écrit : |
quand on a compris ce qu'est un namespace, on sait qu'il est preferable (dans l'ordre)
de ne jamais utiliser la directive using
d'utiliser la directive using en portee minimale
d'utiliser la directive using sur un nom explicite plutot que sur l'ensemble des noms d'un namespace
faire 'using namespace std' ca revient à mettre tout les noms presents dans le namespace std (dans la TU) dans le namespace global de la portee courante, faut en avoir conscience
Marsh Posté le 29-05-2006 à 14:36:21
_darkalt3_ a écrit : Ca montre que le mec a pas compris ce qu'était un namespace. |
Peut-être que le mec en question a compris la différence entre using directive et using declaration ?
Marsh Posté le 29-05-2006 à 14:48:30
skelter a écrit : quand on a compris ce qu'est un namespace, on sait qu'il est preferable (dans l'ordre) |
en l'occurence, on a ici
Code :
|
Marsh Posté le 29-05-2006 à 15:00:23
pour moi, ca dépend surtout de savoir si on sait ce qu'on fait ou non
Marsh Posté le 29-05-2006 à 18:54:54
Merci, ça vient donc du compilateur... J'utilise GCC 3.4.2. Pour l'histoire de namespace vous avez raison je ne sais pas ce que je fais, j'ai juste recopié l'en-tête dans un bouquin d'exercices de C++.
Marsh Posté le 29-05-2006 à 19:08:28
Bon j'ai décoché la case 'turn off all access checking' dans les options de compilation de dev-c++ et maintenant il compile plus...
Marsh Posté le 29-05-2006 à 20:50:37
Est-ce que tu peux la ligne de commande que crée dev-c++ pour invoquer g++ ? (dans les 2 cas)
Marsh Posté le 29-05-2006 à 22:35:51
++fab a écrit : Est-ce que tu peux poster la ligne de commande que crée dev-c++ pour invoquer g++ ? (dans les 2 cas) |
Marsh Posté le 31-05-2006 à 00:18:20
option -fno-access-control
extrait du manuel de gcc
Citation : -fno-access-control |
Marsh Posté le 31-05-2006 à 00:28:42
Je ne connaissais pas. Merci.
Marsh Posté le 31-05-2006 à 00:32:18
alain niala a écrit : Bon j'ai décoché la case 'turn off all access checking' dans les options de compilation de dev-c++ et maintenant il compile plus... |
c'est quoi cette option du malin
Marsh Posté le 29-05-2006 à 12:42:30
Bonjour,
Je suis surpris qu'à l'exécution du code suivant :
include <iostream>
using namespace std ;
using std::endl ;
struct CL {
private :
float z ;
public :
float x ;
};
main()
{CL n; int k ;
n.x=12 ; n.z=15 ;
cout<<n.x<<endl ;
cout<<n.z<<endl ;
cin>>k ;
}
il n'y ait pas de message d'erreur et qu'il s'affiche bien 12 et 15 alors que z est un membre privé de CL. On ne devrait normalement pas y avoir accès à partir du main().
Merci de votre aide !
Message édité par alain niala le 29-05-2006 à 12:54:05