initaliser un tableau de classe avec new ?

initaliser un tableau de classe avec new ? - C++ - Programmation

Marsh Posté le 07-05-2008 à 23:35:08    

bonjour,
 
j'aimerai savoir s'il est possible de déclarer un pointeur vers un tableau de classes qui sont initialisées (en une seule ligne) ?
 
par exemple :
 

Code :
  1. class toto {
  2. public:
  3. toto(int a, char * t) {
  4.  cout << "a=" << a << "t=" << t << endl;
  5. }
  6. };
  7. toto * p__ = new ( (toto(103 ,"p" ) )[10]) ;
  8. //on peut faire un truc comme ca ?????  
  9. //sinon comment faire puisque toto n'a pas de constructeur sans argument ?


 
merci d'avance

Reply

Marsh Posté le 07-05-2008 à 23:35:08   

Reply

Marsh Posté le 08-05-2008 à 09:05:25    

une classe sans constructeur par défaut ne peut être mise dans un tableau par définition ;)

Reply

Marsh Posté le 08-05-2008 à 11:27:38    

std::vector< toto > p__( toto( 103, "p" ), 10 );
 
ça marcherait pas ça ?
comme vector est un template, le code de .resize qui a besoin du constructeur par défaut ne sera pas généré s'il n'est jamais appelé.
 
Mais bon même si ça marche ça serait surement pas portable, la STL étant libre de générer tout le code quelle veut.

Reply

Marsh Posté le 08-05-2008 à 11:35:05    

le truc avec vector devrait marcher sauf si la STL check un concept de type is_default_constructible au sein de la def. de ces sequences.


Message édité par Joel F le 08-05-2008 à 11:35:36
Reply

Marsh Posté le 08-05-2008 à 20:18:25    

ouais, et comme la STL est libre d'utiliser les concepts, ma solution n'est pas portable...

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed