OVH Cloud OVH Cloud

Tableau d'une classe

4 réponses
Avatar
fanny Chevalier
--------------6B61373C0F096977DA8CD4C1
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 8bit

Bonjour,

Je cherche à déclarer un tableau d'une classe Image en connaissant sa
taille.

J'ai testé : Image *images[] = new Images * [nbImages] ;
et autres combinaisons, je ne trouve pas comment déclarer correctement

Quelqu'un peut-il m'aider? D'avance merci

--
Fanny

--------------6B61373C0F096977DA8CD4C1
Content-Type: text/html; charset=us-ascii
Content-Transfer-Encoding: 7bit

<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
Bonjour,
<p>Je cherche &agrave; d&eacute;clarer un tableau d'une classe Image en
connaissant sa taille.
<p>J'ai test&eacute;&nbsp; :&nbsp; Image *images[] = new Images * [nbImages]
;
<br>et autres combinaisons, je ne trouve pas comment d&eacute;clarer correctement
<p>Quelqu'un peut-il m'aider? D'avance merci
<pre>--&nbsp;
Fanny</pre>
</html>

--------------6B61373C0F096977DA8CD4C1--

4 réponses

Avatar
amerio
Je cherche à déclarer un tableau d'une classe Image en connaissant sa taille.
J'ai testé : Image *images[] = new Images * [nbImages] ;
et autres combinaisons, je ne trouve pas comment déclarer correctement
Quelqu'un peut-il m'aider? D'avance merci


Je suppose que tu veux un tableau de pointeurs sur des images, et pas un tableau d'images
directement...

Style C :

Image **images = new Image*[nbImages];
images[0] = new Image;
....
delete images[0];
...
delete[] images; // ne pas oublier les crochets !!


Style C++ :

std::vector<Image*> images;
images.push_back( new Image );
...
while (!images.empty())
{
delete images.back();
images.pop_back();
}
...
images.clear();


En C, si tu voulais un tableau d'image directement, ca serait :
Image *images = new Image[nbImages];

Avatar
Anthony Fleury
Bonjour,
Je cherche à déclarer un tableau d'une classe Image en connaissant sa
taille.

J'ai testé : Image *images[] = new Images * [nbImages] ;
et autres combinaisons, je ne trouve pas comment déclarer correctement
Quelqu'un peut-il m'aider? D'avance merci


Si tu veux un tableau d'images, il faut faire tout simplement
Image *images = new Image[nbImages];
(Attention dans ton exemple tu as mélangé Images et Image...)

puis un delete[] images pour le libérer.

Seulement c'est un tableau "à la C".
Le C++ t'offre dans la STL vector :

#include <vector>

...
std::vector<Image> images(nbImages);
...

--
Anthony

Avatar
Samuel Krempp
le Sunday 05 October 2003 16:47, écrivit :
Je suppose que tu veux un tableau de pointeurs sur des images, et pas un
tableau d'images directement...


C'est une supposition n'est pas forcément appropriée, il y a pas mal de
classes d'images qui sont en fait des handles, par exemple celle de
Magick++ (qui se base sur un pointeur avec comptage de référence)
Et si la classe Image a effectivement une sémantique de valeur (et engendre
donc de grosses copies effectuées à chaque copie d'objet), pquoi pas
utiliser des pointeurs intelligents plutot que des pointeurs crus ?

Style C++ :

std::vector<Image*> images;
images.push_back( new Image );
...
while (!images.empty())
{
delete images.back();
images.pop_back();
}
...
images.clear();


Style C++ avec smart pointers :
{
typedef boost::shared_ptr<Image> ImagePtr; // www.boost.org
std::vector<ImagePtr> images;
images.push_back(ImagePtr(new Image) );
...
}

l'avantage saute aux yeux : on peut laisser le destructeur du vector (et
ceux des shared_ptr) s'occupper eux-même de désallouer ce qu'il faut quand
il faut.

--
Sam

Avatar
fanny Chevalier
--------------4C13916A6369916F2308B3C6
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 8bit

fanny Chevalier wrote:

Bonjour,

Je cherche à déclarer un tableau d'une classe Image en connaissant sa
taille.

J'ai testé : Image *images[] = new Images * [nbImages] ;
et autres combinaisons, je ne trouve pas comment déclarer correctement

Quelqu'un peut-il m'aider? D'avance merci

--
Fanny



C'etait bien un tableau de tableau d'images. Merci pour vos conseils,
problème résolu.

--
Fanny



--------------4C13916A6369916F2308B3C6
Content-Type: text/html; charset=us-ascii
Content-Transfer-Encoding: 7bit

<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
fanny Chevalier wrote:
<blockquote TYPE=CITE>Bonjour,
<p>Je cherche &agrave; d&eacute;clarer un tableau d'une classe Image en
connaissant sa taille.
<p>J'ai test&eacute;&nbsp; :&nbsp; Image *images[] = new Images * [nbImages]
;
<br>et autres combinaisons, je ne trouve pas comment d&eacute;clarer correctement
<p>Quelqu'un peut-il m'aider? D'avance merci
<pre>--&nbsp;
Fanny</pre>
</blockquote>

<p><br>C'etait bien un tableau de tableau d'images. Merci pour vos conseils,
probl&egrave;me r&eacute;solu.
<pre>--&nbsp;
Fanny&nbsp;


</pre>
&nbsp;</html>

--------------4C13916A6369916F2308B3C6--