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 :

Un problème avec la déclaration d'un vecteur


Sujet :

C++

  1. #1
    Paulinho
    Invité(e)
    Par défaut Un problème avec la déclaration d'un vecteur
    J'ai fait le code (incomplet, encore) suivant pour faire une pille(Pilha) de taille 10 des points(Ponto):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
     
    #include <iostream>
    #include <cmath>
     
    using namespace std;
     
    class Par {
     
    private: 
        double left;
        double right;
     
    public:
        Par() {left = 0; right = 0;}
        Par(double l, double r) {left = l; right = r;}
     
        void set_left(double n) {left = n;}
        void set_right(double n) {right = n;}
        double get_left() const {return left;}
        double get_right() const {return right;}
    };
     
    class Ponto: public Par {
     
    public:
        Ponto():Par() {};
        Ponto(double x, double y):Par(x,y) {};
     
        void set_abc(int x) {set_left(x);}
        void set_ord(int y) {set_right(y);}
        double get_abc() {return get_left();}
        double get_ord() {return get_right();}
        virtual void print() const {
        	cout << "(" << get_left() << "," << get_right() << ")" << endl;}
    };
     
    template <class C, int I>
     
    class Pilha
    {
    private:
      typedef struct list_node
      { C * elem;
        struct list_node * next;
      }List_node, * List_node_ptr;
     
      List_node_ptr list;
      Ponto C[I];
     
    public:
     
      Pilha()
      { list = NULL; }
      virtual bool isempty() const 
      { if (list == NULL)
          return true;
        else return false; }
     
      virtual void listcons(C& x)
      { List_node_ptr aux = new List_node;
        aux->elem = &x;
        aux->next = list;
        list = aux; }
     
      virtual C listhead() const
      { if (isempty())
          { cout << "Lista Vazia"<<endl;
          }
        else 
          return *(list->elem); }
     
      virtual void listtail() 
      { if (isempty())
          cout<<"Lista Vazia"<<endl;
        else
          {	List_node_ptr aux = list;
    	list = list -> next;
    	delete aux; }
      }
     
     
    virtual void printpilha() const
    {
     
      List_node_ptr aux = list;
      while (aux != NULL)
        { aux->elem->print();
          aux = aux -> next; }   
    }
    };
     
     
    int main()
    {
    Pilha <Ponto, 10> pp;
    Ponto p(1,2);
    Ponto q(3,4);
    pp.listcons(p);
    pp.listcons(q);
    pp.printpilha();
    };
    Mais le compilateur dit qu'il y a un erreur dans la déclaration du vecteur Ponto C[I]. Je veut un vecteur avec 10 points mais je n'arrive pas a le déclarer! Quelqu'un sait où est le erreur dans la déclaration?

    Merci d'avance!

  2. #2
    jmv
    jmv est déconnecté
    Membre chevronné Avatar de jmv
    Profil pro
    Enseignant
    Inscrit en
    Mai 2004
    Messages
    395
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Mai 2004
    Messages : 395
    Par défaut
    je pense qu'il y a conflit entre le nom de l'attribut C et le paramètre C de la classe template.

    je comprends pas trop ce que tu veux faire, dans la classe Pilha in y a une liste de pointeur de C et un tableau de Ponto :

  3. #3
    Paulinho
    Invité(e)
    Par défaut
    Je veut une pille des points, e.g. [(1,2), (2,-4), (0, -7),...] avec 10 points au total. Je veut, mais ça je sais le faire, introduit et retirer des points de la pille. Mais réelement il y a un conflit avec C mais je n'arrive pas a comprendre comment déclarer le vecteur d'autre mode...

  4. #4
    jmv
    jmv est déconnecté
    Membre chevronné Avatar de jmv
    Profil pro
    Enseignant
    Inscrit en
    Mai 2004
    Messages
    395
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Mai 2004
    Messages : 395
    Par défaut Re: Un problème avec la déclaration d'un vecteur
    Je ne comprends le role de la ligne : Ponto C[I];

    Citation Envoyé par Paulinho
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    template <class C, int I>
    class Pilha
    {
    private:
      typedef struct list_node
      { C * elem;
        struct list_node * next;
      }List_node, * List_node_ptr;
     
      List_node_ptr list;
      Ponto C[I]; <== ça sert à quoi ??????? ENLEVE-LE
      /...

  5. #5
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    template <class C, int I> 
    class Pilha 
    { 
    private: 
     ....
     Ponto C[I];
     ....
    Change l'identificateur du tableau , il est en conflit avec le paramètre template C comme le dit jmv. Par exemple :

Discussions similaires

  1. Problème avec déclaration VARRAY
    Par zinabd dans le forum PL/SQL
    Réponses: 1
    Dernier message: 06/11/2008, 14h45
  2. Problème avec les vecteurs Java
    Par choko83 dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 22/05/2008, 17h52
  3. Problème avec les vecteurs
    Par lamia89 dans le forum Débuter avec Java
    Réponses: 11
    Dernier message: 09/04/2008, 21h34
  4. Problèmes avec les Vecteurs
    Par alsimb dans le forum C
    Réponses: 8
    Dernier message: 10/02/2007, 10h29
  5. problème avec un vecteur
    Par Mathieu.J dans le forum C++
    Réponses: 9
    Dernier message: 30/10/2005, 22h53

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