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 :

Création de classe "vector"


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2
    Par défaut Création de classe "vector"
    Bonjour, je souhaite créer une classe "vector" pour la programmation d'un arduino. En effet, je n'ai pas pu inclure dans mon projet les fichiers STL qui me permette d'utiliser cette classe. J'ai quelques erreurs dans mon code et je voudrais de l'aide pour les corriger. Merci


    MyVector.h

    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
    *
    /*    
        fichier MyVector.h
    */
    #include <iostream>
     
    using namespace std;
     
    template<typename ItemType>
     
    class MyVector
    {
        public:
            MyVector();
            MyVector(int max_size_input);  
            ~MyVector();
            void push_back(ItemType& element_to_add);
            void pop_back();
            int getSize();
            ItemType operator[](int i);
        private:
            int vect_size;
            int max_size;
            ItemType* array;
     
    }


    MyVector.cpp

    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
    /*
        fichier 
    */
     
    #include <iostream>
    #include "MyVector.h";
     
    //using namespace std;
     
    template<typename ItemType>
     
    MyVector::MyVector()
    {
            vect_size = 0;
            max_size = 5;
            array = new ItemType[max_size]; //assign pointer to new
    }
    MyVector::MyVector(int max_size_input)
    {
            vect_size = 0;
            max_size = max_size_input;
            array = new ItemType[max_size]; //assign pointer to new 
    }
     
    MyVector::~MyVector()
    {
            //dealocate the memory
            delete[] array;
    }
     
    void MyVector:: push_back(ItemType& element_to_add)
    {
     
            array[vect_size] = element_to_add;
            vect_size++;
    }
     
    void MyVector:: pop_back()
    {
            vect_size--;
    }
     
    int MyVector:: getSize()
    {
            return vect_size;
    }
     
    ItemType MyVector:: operator[](int i)
    {
            return array[i]; 
     
    }
    Les erreurs renvoyées après compilation:

    MyVector.cpp:6: error: expected unqualified-id before 'template'

    MyVector.cpp:14: error: 'template<class ItemType> class MyVector' used without template parameters

    MyVector.cpp:14: error: ISO C++ forbids declaration of 'MyVector' with no type

    MyVector.cpp:In function 'int MyVector(int)'

    MyVector.cpp:14: error: 'int MyVector(int)' redeclared as different kind of symbol

    MyVector.h:7: error: previous declaration of 'template<class ItemType> class MyVector'

    MyVector.cpp:16: error: 'vect_size' was not declared in this scope

    MyVector.cpp:17: error: 'max_size' was not declared in this scope

    MyVector.cpp:18: error: 'array' was not declared in this scope

    MyVector.cpp:18: error: expected type-specifier before 'ItemType'

    MyVector.cpp:18: error: expected `;' before 'ItemType'

    MyVector.cpp:At global scope

    MyVector.cpp:21: error: expected constructor, destructor, or type conversion before '::' token

    MyVector.cpp:27: error: 'template<class ItemType> class MyVector' used without template parameters

    MyVector.cpp:27: error: variable or field 'push_back' declared void

    MyVector.cpp:27: error: 'ItemType' was not declared in this scope

    MyVector.cpp:27: error: 'element_to_add' was not declared in this scope

    MyVector.cpp:34: error: 'template<class ItemType> class MyVector' used without template parameters

    MyVector.cpp:In function 'void pop_back()'

    MyVector.cpp:36: error: 'vect_size' was not declared in this scope

    MyVector.cpp:At global scope

    MyVector.cpp:39: error: 'template<class ItemType> class MyVector' used without template parameters

    MyVector.cpp:In function 'int getSize()'

    MyVector.cpp:41: error: 'vect_size' was not declared in this scope

    MyVector.cpp:At global scope

    MyVector.cpp:44: error: 'ItemType' does not name a type

  2. #2
    Membre éclairé

    Inscrit en
    Avril 2011
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Avril 2011
    Messages : 55
    Par défaut
    Bonjour, je ne sais pas si cela va résoudre tous tes problèmes, mais dans ton .cpp, il faut déclarer tes méthodes comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    template<typename ItemType>
    MyVector<ItemType>::MyVector()
    {
            vect_size = 0;
            max_size = 5;
            array = new ItemType[max_size]; //assign pointer to new
    }
    De plus il faut mettre le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     template<typename ItemType>
    au-dessus de chaque méthode. Voici un lien qui peut être utile http://fr.wikibooks.org/wiki/Program...asses_template.

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2
    Par défaut
    Oui merci, je l'ai mis à chaque que j'utilise MyVector et ca marche. Il y'a aussi le fait que j'avais pas mis la protection d'inclusion multiple. mais c'est bon maintenant.
    Merci.

+ Répondre à la discussion
Cette discussion est résolue.

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