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 :

Tableau d'objets implémentation


Sujet :

C++

  1. #1
    Membre éclairé
    Homme Profil pro
    Architecte technique
    Inscrit en
    Février 2004
    Messages
    477
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Service public

    Informations forums :
    Inscription : Février 2004
    Messages : 477
    Par défaut Tableau d'objets implémentation
    Bonjour,

    Je souhaite créer un tableau contenant des objets mais j'ai une erreur qui se génère et je ne comprends pas pourquoi !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    TCompareResult * result = new TCompareResult(arg1 , arg2)
    TCompareResult * tabResult = new TCompareResult[nbCombinaison];
    tabResult[0] = result;
    Et voici l'erreur généré:
    [C++ Erreur] Unit1.cpp(821): E2094 'operator=' non implémenté dans le type 'TCompareResult' pour les arguments de type 'TCompareResult *'

    Quelle est la solution à mon problème ?

    Merci

  2. #2
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Par défaut
    En faisant ça : tabResult[0] = result;, tu mets un pointeur dans ton tableau (qui est censé avoir des classes, et non des pointeurs).

    Ceci devrait marcher :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    TCompareResult  result(arg1 , arg2);
    TCompareResult * tabResult = new TCompareResult[nbCombinaison];
    tabResult[0] = result;
    Edit : Tu as oublié un ; en plus à la fin de ta première ligne.

  3. #3
    Membre éclairé
    Homme Profil pro
    Architecte technique
    Inscrit en
    Février 2004
    Messages
    477
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Service public

    Informations forums :
    Inscription : Février 2004
    Messages : 477
    Par défaut
    Oui mais moi ce que j'aimerais c'est de mettre dans un tableau dynamique des objets créé dynamiquement!

    Par conséque il faut que je garde la déclaration TCompareResult * result = new TCompareResult(arg1 , arg2)

  4. #4
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Par défaut
    Tu as plusieurs choix :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    TCompareResult*  result = new TCompareResult(arg1 , arg2);
    TCompareResult * tabResult = new TCompareResult[nbCombinaison];
    tabResult[0] = *result;
    Ou :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    TCompareResult*  result = new TCompareResult(arg1 , arg2);
    TCompareResult ** tabResult = new *TCompareResult[nbCombinaison];
    tabResult[0] = result;


    Il faudra faire attention pour la destruction des instances. En effet, avec la première méthode, tu peux supprimer directement l'instance result, mais pas avec la seconde.

  5. #5
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Par défaut
    Je viens seulement de penser que le premier cas peut te poser des problèmes si tu réalises des allocations dynamiques dans le constructeur. Tu peux avoir des problèmes si tu appelles le destructeur après (l'instance dans le tableau aura certains champs partiellement détruits).

    Tu peux donc préferer la deuxième méthode qui évite ce problème et les recopie de la classe dans le tableau.

  6. #6
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 296
    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 296
    Par défaut
    Tu as mélangé les niveaux d'indirection.
    Et accessoirement, les vecteurs c'est bien.
    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...

Discussions similaires

  1. Implémentation tableau d'objet
    Par punisher999 dans le forum C#
    Réponses: 1
    Dernier message: 17/02/2009, 20h59
  2. Tableau d'objets
    Par moulefrite dans le forum MFC
    Réponses: 7
    Dernier message: 15/06/2004, 14h14
  3. Sauvegarde / Chargement d'un tableau d'objets
    Par Naruto dans le forum Langage
    Réponses: 3
    Dernier message: 18/05/2004, 14h34
  4. [VB6]Tableau d'objet withevents
    Par soazig dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 13/02/2004, 19h44
  5. [VB6] [Syntaxe] Fonction renvoyant un tableau d'objets
    Par Troopers dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 18/10/2002, 15h33

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