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 :

d'un tableau d'une taille d'une donnée membre


Sujet :

C++

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 15
    Points : 7
    Points
    7
    Par défaut d'un tableau d'une taille d'une donnée membre
    Bonjour,

    Pour divers raison je dois allouer un tableau de NodePtr (Type de la biblio OpenSG) en statique.
    La taille de ce tableau doit etre de la taille d'une donnée membre de la classe dans laquelle j'ai besoin de ce tableau.
    en gros ca donne ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    class A{
    private :
     ....
     const int x;
     ...
    public :
     void maMethode();
    }
     
    void A::maMethode()
    {
       NodePtr nom[x];
    ...
    }
    A la compile, VS me dit qu'il attends une constante à la place du x.
    (je suis obligé de faire une allocation statique, pas de new donc.)
    Comment faire ?

    merci d'avance

    EDIT : désolé mon titre n'est pas clair

  2. #2
    Alp
    Alp est déconnecté
    Expert éminent sénior

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Points : 11 861
    Points
    11 861
    Par défaut
    Pourquoi ne pas utiliser un modèle, avec un int en paramètre ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    template <int N> class A {
    public:
        ....
     
    private:
         NodePtr nom[N]; 
         ...
    };
     
    // plus loin, très loin, dans ton code :
    A<4> truc; // créé une instance de A, avec un tableau nom de taille 4 :)

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 15
    Points : 7
    Points
    7
    Par défaut
    car le cursus universitaire dans lequel je suis ne m'a jamais montrer cette chose en C++ que sont les templates.
    (d'ailleurs en 4ans on a jamais fais de c++)

    merci de ta réponse, j'ai désormé des erreurs un peu partout dans mon code mais j'espere et pense pouvoir m'en sortir

  4. #4
    Alp
    Alp est déconnecté
    Expert éminent sénior

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Points : 11 861
    Points
    11 861
    Par défaut
    Hé bien ces Cours C++
    devrait être pas mal, celui traitant les templates
    Ça ira mieux après ça je pense.

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 15
    Points : 7
    Points
    7
    Par défaut
    encore merci

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 15
    Points : 7
    Points
    7
    Par défaut
    bon ca compile en partie, en faites désormais ca bug a l'édition des liens

    je donne une partie du code source, ca sera plus simple
    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
    -------------------
    PLAN.H
     
    template <int X, int Y> class Plan{
    private :
    	float _zPosition;
    	const int _dimX;
    	const int _dimY; 
    	IRM_Volume** _matriceVolume;
    	NodePtr _plan[X][Y];
    	NodePtr _noeudPlan;
    	TransformPtr _translation[3][3],_transformationNull;
     
    public :
    	Plan(int x, int y, float z);
    	~Plan(void);
    	void suivant();			
    	void affiche3D();	
    ....
    };

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    ----------------
    Plan.cpp 
    ...
    template <int X> Plan<X>::methode(args) 
    ...
    ----------------


    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
    IRM.CPP
    #include "Plan.h"
    ....
    IRM::IRM(int x,int y,int z): _dimX(x), _dimY(y), _dimZ(z)
    {
     
    	_espace = new Plan<4>*[_dimZ];
    	for (int i=0 ; i<_dimZ ; i++)
    	{
    		float zPos = -70*i; 
    		_espace[i] = new Plan<4>(_dimX,_dimY,zPos);
    	}
    	creerNoeud();
    	_antenneActive = false;
     
    }
     
    void IRM::suivant(){
     
    }
    void IRM::affiche3D(){
    	if(_antenneActive)
    		_espace[planActif]->affiche3D();	
    	else 	
    	{
    		for (int i=0 ; i<_dimX ; i++)
    			_espace[i]->affiche3D();	
    	}
     
    }
    ....
    -------

    Les erreurs sont les suivantes :
    IRM error LNK2019: symbole externe non résolu "public: __thiscall Plan<4>:lan<4>(int,int,float)" (??0?$Plan@$03@@QAE@HHM@Z) référencé dans la fonction "public: __thiscall IRM::IRM(int,int,int)" (??0IRM@@QAE@HHH@Z)
    les autres je ne les copies, ce sont les meme, seul la methode "fautive" change...
    (l'erreur apparait lorsque je fais appel a une methode de ma classe Plan)

  7. #7
    Alp
    Alp est déconnecté
    Expert éminent sénior

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Points : 11 861
    Points
    11 861
    Par défaut
    Une petite recherche et ça va mieux
    http://c.developpez.com/faq/cpp/?pag...VERS_templates

  8. #8
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Février 2006
    Messages
    943
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Février 2006
    Messages : 943
    Points : 1 156
    Points
    1 156
    Par défaut
    et pourquoi ne pas utiliser tout betement un vector ?

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 15
    Points : 7
    Points
    7
    Par défaut
    car pour le moment comme tu le vois je n'ai que 2 dimensions mais apres je passerais a 5 ou 6 dimensions selon ce qui nous sera demandé.
    donc un vector de vector de vector de ... c'est pas super pratique

Discussions similaires

  1. Réponses: 7
    Dernier message: 25/03/2011, 10h52
  2. [XL-2002] Macro de comparaison d'une cellule d'une feuille avec une cellule d'une autre feuille.
    Par steelydan dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 08/09/2010, 12h59
  3. Réponses: 4
    Dernier message: 15/10/2009, 13h33
  4. [XL-2007] Afficher une checkbox dans une feuille si une checkbox d'une autre feuille est cochée
    Par JessieCoutas dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/08/2009, 13h35
  5. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48

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