Bonjour,
j'aimerai faire cela
client c1[10]
client C2[10]
c1 = C2 ;
comment faire cela ???
merci
Bonjour,
j'aimerai faire cela
client c1[10]
client C2[10]
c1 = C2 ;
comment faire cela ???
merci
Si tu veux réellement copié C2 dans c1, il faut toi-même copier les instances une par une dans un nouveau tableau (car ton code précédant copiera l'adresse de c1 dans c2):
Mais le mieux est d'utiliser des vecteurs tu te simplifieras la vie -> http://c.developpez.com/faq/cpp/?page=STL#STL_vector
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 client c1[10] client C2[10] for(int i=0; i<10; i++) { c1[i] = C2[i]; }
Envoyé par Fiquet
il ne reconnait pas l'operateur = !
error C2676: binary '[' : 'class User' does not define this operator or a conversion to a type acceptable to the predefined operator
il faut dc que je redefinisse l'opérateur ?
Alors ce n'est pas l'opérateur = mais l'opérateur [ qui pose problème. Tu es dans une classe? As-tu surcharger un autre opérateur? Normalement il ne devrait pas y avoir de problème...
J'explique mieux :Envoyé par Fiquet
Je suis dans ma 1ere interface :
je veut recupérer lesUsers dans la 2nd interfaces.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 User CMBC_APPRO_1Dlg::getLesUsers(User u) { std::vector<User> v; for (int i = 0;i<= max; i++){ v.push_back(lesUsers[i]); v[i] = u[i]; }//for return u; }
( sinon j peut mettre dans la classe Users un tableau de users ????)
As tu utilises des vecteurs!
Alors tu peux simplement faire
Mais que veux tu faire dans cette fonction getLesUsers()? Ce que tu veux faire est faux car tu crée un simple vecteur v et tu le retourne.
Code : Sélectionner tout - Visualiser dans une fenêtre à part v1 = v2
v n'existe plus après la fonction...
en claire se que je veut faire c'est recuperer le tableau de user
dans une 2eme intefaces ...
Comment je fais ???
- Je crée un tableau de Users dans la calasse users ???
Aidez moi svp !!!
je vois pas comment faire !!
Mais on ne peut pas t'aider si tu explique un peu mieux.Envoyé par Bason_sensei
.
Là tu parle d'un tableau de Users dans la classe users tu veux pas plutôt dire dans ta classe CMBC_APPRO_1Dlg?? Enfin la tu as une fonction member Get tu devrais plutôt simplement retourner les User, mais si tu n'en a pas définis dans ta classe c'est clair qu'il faut le mettre en membre donnée sinon ça n'a pas de sens de faire le code que tu as en dessous qui n'est pas correct.
Après à l'endroit ou tu appelles getLesUsers tu copie simplement les membres. Si tu ne comprends pas le principe d'utilisation je te conseille d'aller regarder la. Et pour comprendre un peu le principe il faudrait voir un peu plus le code de tes classes...
j'explique mieux (dsl je dois reprendre le prog de quelq'un ... c dur)
CMBC_APPRO_1Dlg c'est ma 1er interface.
je teste voir le nombre de users (j'ai donc créer un tableau de Users)
Je passe sur une 2eme interface et la je veut recup le tableau de users ... voila en clair comment je doit faire.
hypothese
J'ai pensé a mettre un tableau de users dans Users mais je sais pas si c'est correct.
Donné moi vos idée svp !!!
s'il vous plait![]()
![]()
![]()
![]()
personne ne sais ???
Un truc m'intrigue. Tu passe a ta fonction "getLesUsers" une variable de type "User" mais pas de type "std::vector<User>".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 User CMBC_APPRO_1Dlg::getLesUsers(User u) { std::vector<User> v; for (int i = 0;i<= max; i++){ v.push_back(lesUsers[i]); v[i] = u[i]; }//for return u; }
Tu ne chercherais pas a faire des [] sur un des éléments du vector plutot que sur le vector lui même ?
ps: Tu as p-e déja une copie car tu ne passe pas ton vector par référence. Mais bon ça c'est a vérifier ^^.
comment le passer de type vector ????Envoyé par Heptaeon
PS: merci d'avoir repondu
Comme ca ^^.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 std::vector<User> & CMBC_APPRO_1Dlg::getLesUsers(std::vector<User> &u) { std::vector<User> v; for (int i = 0;i<= max; i++){ v.push_back(lesUsers[i]); v[i] = u[i]; }//for return u; }
Les petit & apres c'est pour le passage par reférence. C'est a dire que tu donne l'objet par son adresse donc lui-même et pas une copie de l'objet.
Arg !!! Fichus navigateurs de ~#[^~| qui ne savent pas que <ctrl-w> c'est pour effacer le dernier mot saisi.
Du coup je vais faire court. :-/
a- Ne JAMAIS retourner de référence sur des variables locales
b- Toujours (je simplifie) prendre par référence constante un gros paramètre entrant qui ne sera pas modifié
c- D'où sort lesUSers[i] ?
d- Pourquoi ne pas faire directement v.push_back(u[i]);
d.bis- Pourquoi ne pas faire directement v=u;
d.ter- Pourquoi ne pas faire directement return u;
d.qua(?)- Pourquoi cette fonction ?
Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...
Tout d'abord merci tous ta reponse.Envoyé par Heptaeon
J'ai un message d'erreur :
F:\MBC_APPRO_1Dlg.cpp(141) : error C2511: 'getLesUsers' : overloaded member function 'class std::vector<class User,class std::allocator<class User> > &(class std::vector<class User,class std::allocator<class User> > &)' not fo
und in 'CMBC_APPRO_1Dlg'
Alors :Envoyé par Luc Hermitte
c - lesUsers est declarer dans le .h par
User lesUsers[max];
d - car il me dit :
error C2676: binary '[' : 'class User' does not define this operator or a conversion to a type acceptable to the predefined operator
d.bis - car il me dis ca :
error C2679: binary '=' : no operator defined which takes a right-hand operand of type 'class std::vector<class User,class std::allocator<class User> >' (or there is no acceptable conversion)
d.ter - c'est le tableau lesUsers que je veut retourner, et quand je fait return lesUsers :
error C2664: '__cdecl User::User(const class User &)' : cannot convert parameter 1 from 'class User [10]' to 'const class User &'
d.qua : parce que :
CMBC_APPRO_1Dlg c'est ma 1er interface.
je teste voir le nombre de users (j'ai donc créer un tableau de Users)
Je passe sur une 2eme interface et la je veut recup le tableau de users ...
si tu a une autre methode je veut ^^
Merci d'avoir repondu.
Elle est au moins definie dans la portée inférieur, car il la passe en paramètre. Mais j'avoue que c'est exotique ^^ (ca me rapel les surchage de l'opérateur = pour les = a la chaineEnvoyé par Luc Hermitte
). En faite toute la fonction est exotique de base
.
Partager