Léa-Linux & amis :   LinuxFR   GCU-Squad   GNU
c++/ allocation d'un tableau de taille d'une donnée membre
Envoyé par: picsou33

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 :

class A{
private :
....
const int x;
...
public :
void maMethode();
}

void A::maMethode()
{
NodePtr nom[x];
...
}
A la compile, le compilateur 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

Poste le Monday 27 February 2006 18:45:03
Répondre     Citer    
Re: c++/ allocation d'un tableau de taille d'une donnée membre

Citation
picsou33
(je suis obligé de faire une allocation statique, pas de new donc.)

Ce n'est pas une allocation statique, car la taille n'est pas statiquement connue à la compilation de l'unité de compilation.

Pourquoi ne pas utiliser une donnée statique dont le constructeur (appelé avant le main) fait l'allocation nécessaire par un new?

Variante, utiliser un pointeur statique, et faire une méthode statique qui alloue ce pointeur s'il est nul?



----

Basile STARYNKEVITCH

Membre de l'APRIL « promouvoir et défendre le logiciel libre » - adhérez vous aussi à l'APRIL!

Projet logiciel libre: RefPerSys

Poste le Monday 27 February 2006 18:58:38
Répondre     Citer    
Re: c++/ allocation d'un tableau de taille d'une donnée membre
Envoyé par: menelrandir

Pourquoi ne pas plutôt utiliser un des conteneurs de la bibliothèques standard, un vector par exemple ?

Poste le Monday 27 February 2006 19:03:02
Répondre     Citer    
Re: c++/ allocation d'un tableau de taille d'une donnée membre
Envoyé par: picsou33

je ne peux pas faire de new helas, la class NodePtr ne peux s'instancier a l'aide d'un new mais seulement a l'aide de la methode create : Node::create(); qui retourne un Pointeur (ptr) de node d'ou NodePtr

je n'utilise pas de vector car en faite c'est un tableau a 5dimensions, et un vector de vector de vector.... je ne m'en sortirais tres vite plus :d

Poste le Monday 27 February 2006 19:10:34
Répondre     Citer    
Re: c++/ allocation d'un tableau de taille d'une donnée membre
Envoyé par: Sve@r

Citation
picsou33
je ne peux pas faire de new helas, la class
NodePtr ne peux s'instancier a l'aide d'un new
mais seulement a l'aide de la methode create :
Node::create(); qui retourne un Pointeur (ptr) de
node d'ou NodePtr

je n'utilise pas de vector car en faite c'est un
tableau a 5dimensions, et un vector de vector de
vector.... je ne m'en sortirais tres vite plus :d

void A::maMethode() 
{ 
int i;
NodePtr **nom;

nom=new (NodePtr*)[x];
for (i=0; i < x; i++)
....nom=Node::Create();
}


L'homme qui murmurait à l'oreille des pingouins
[fr.lang.free.fr]

Poste le Monday 27 February 2006 21:50:16
Répondre     Citer    
Re: c++/ allocation d'un tableau de taille d'une donnée membre
Envoyé par: picsou33

Citation
Sve@r
nom=new (NodePtr*)[x];

non c'etait la premiere chose que j'avais essayé winking smiley
ca ne me marche pas j'avais une erreur qui ressemblait a ca :

error : 'osg::NodePtr' : utilisation non conforme de ce type comme expression

sinon j'ai trouvé une solution, j'ai fais un patron de classe...
Merci de votrre aide en tout cas

Poste le Tuesday 28 February 2006 09:08:23
Répondre     Citer    
Re: c++/ allocation d'un tableau de taille d'une donnée membre
Envoyé par: Sve@r

Citation
picsou33
Sve@r a écrit :nom=new (NodePtr*);

non c'etait la premiere chose que j'avais essayé
winking smiley
ca ne me marche pas j'avais une erreur qui
ressemblait a ca :

error : 'osg::NodePtr' : utilisation non conforme
de ce type comme expression
Pas normal. Allouer un tableau de "n" pointeurs est vraiment trivial comme manip. Au pire, on peut faire
nom=(NodePtr **)malloc(x * sizeof(NodePtr*));
Citation
picsou33
sinon j'ai trouvé une solution, j'ai fais un patron de classe...
Je ne sais absolument pas ce que c'est... mais faut dire que je débute en C++...


L'homme qui murmurait à l'oreille des pingouins
[fr.lang.free.fr]

Poste le Wednesday 1 March 2006 19:00:18
Répondre     Citer    

Veuillez vous authentifier auparavant pour commenter.

 

Ce forum !
c++/ allocation d'un tableau de taille d'une donnée membre
Pour poser vos questions sur les scripts shell, le Perl, le C, etc... Attention : nous ne sommes pas des spécialistes du dev, ce forum est juste pour de petites aides ponctuelles concernant le développement et les outils de développement.

Sauf mention contraire, les documentations publiées sont sous licence Creative-Commons