IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

tabeau de classe = tableau de classe


Sujet :

C++

  1. #1
    Membre confirmé
    Inscrit en
    Octobre 2005
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 79
    Par défaut tabeau de classe = tableau de classe
    Bonjour,
    j'aimerai faire cela

    client c1[10]
    client C2[10]

    c1 = C2 ;


    comment faire cela ???
    merci

  2. #2
    Membre émérite

    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2005
    Messages
    634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2005
    Messages : 634
    Par défaut
    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):
    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];
    }
    Mais le mieux est d'utiliser des vecteurs tu te simplifieras la vie -> http://c.developpez.com/faq/cpp/?page=STL#STL_vector

  3. #3
    Membre confirmé
    Inscrit en
    Octobre 2005
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 79
    Par défaut
    Citation Envoyé par Fiquet
    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):
    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];
    }

    il ne reconnait pas l'operateur = !

  4. #4
    Membre émérite

    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2005
    Messages
    634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2005
    Messages : 634
    Par défaut
    Comment ça? As-tu surchargé l'opérateur =?

  5. #5
    Membre confirmé
    Inscrit en
    Octobre 2005
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 79
    Par défaut
    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 ?

  6. #6
    Membre émérite

    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2005
    Messages
    634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2005
    Messages : 634
    Par défaut
    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...

  7. #7
    Membre confirmé
    Inscrit en
    Octobre 2005
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 79
    Par défaut
    Citation Envoyé par Fiquet
    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 :
    Je suis dans ma 1ere interface :

    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;
    }
    je veut recupérer lesUsers dans la 2nd interfaces.

    ( sinon j peut mettre dans la classe Users un tableau de users ????)

  8. #8
    Membre émérite

    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2005
    Messages
    634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2005
    Messages : 634
    Par défaut
    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.

    v n'existe plus après la fonction...

  9. #9
    Membre confirmé
    Inscrit en
    Octobre 2005
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 79
    Par défaut
    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 !!

  10. #10
    Membre émérite

    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2005
    Messages
    634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2005
    Messages : 634
    Par défaut
    Citation Envoyé par Bason_sensei
    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. .

    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...

  11. #11
    Membre confirmé
    Inscrit en
    Octobre 2005
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 79
    Par défaut
    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 !!!

  12. #12
    Membre confirmé
    Inscrit en
    Octobre 2005
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 79
    Par défaut
    s'il vous plait

  13. #13
    Membre confirmé
    Inscrit en
    Octobre 2005
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 79
    Par défaut
    personne ne sais ???

  14. #14
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    177
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 177
    Par défaut
    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; 
    }
    Un truc m'intrigue. Tu passe a ta fonction "getLesUsers" une variable de type "User" mais pas de type "std::vector<User>".

    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 ^^.

  15. #15
    Membre confirmé
    Inscrit en
    Octobre 2005
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 79
    Par défaut
    Citation Envoyé par Heptaeon
    Un truc m'intrigue. Tu passe a ta fonction "getLesUsers" une variable de type "User" mais pas de type "std::vector<User>". .
    comment le passer de type vector ????

    PS: merci d'avoir repondu

  16. #16
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    177
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 177
    Par défaut
    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; 
    }
    Comme ca ^^.
    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.

  17. #17
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 291
    Par défaut
    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...

  18. #18
    Membre confirmé
    Inscrit en
    Octobre 2005
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 79
    Par défaut
    Citation Envoyé par Heptaeon
    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; 
    }
    Comme ca ^^.
    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.
    Tout d'abord merci tous ta reponse.
    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'

  19. #19
    Membre confirmé
    Inscrit en
    Octobre 2005
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 79
    Par défaut
    Citation Envoyé par Luc Hermitte
    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 ?
    Alors :
    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.

  20. #20
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    177
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 177
    Par défaut
    Citation Envoyé par Luc Hermitte
    ...
    a- Ne JAMAIS retourner de référence sur des variables locales
    ...
    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 chaine ). En faite toute la fonction est exotique de base .

Discussions similaires

  1. accesseur tableau de class A dans une class B
    Par dropsoil dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 29/05/2009, 21h06
  2. class pour table + class pour td = class td non fonctionnelle ?
    Par supergrey dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 28/05/2009, 08h13
  3. [POO] Tableau et classe
    Par altair8080 dans le forum Langage
    Réponses: 4
    Dernier message: 14/12/2006, 16h32
  4. Réponses: 5
    Dernier message: 11/05/2006, 14h15
  5. Suppression d'un tableau de classe de la memoire
    Par jhary07 dans le forum Framework .NET
    Réponses: 2
    Dernier message: 14/11/2005, 08h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo