Il n'y a pas de syntaxe pour initialiser la liste d'un tableau alloué dynamiquement.
Vous devez
- Soit 1) par défaut construire comme dans l'exemple que vous présentez, et modifier les objets après la création.
- Ou 2) allouer un tableau de caractères de taille suffisante et construire les objets avec placement-new.
1) n'est pas une option si la classe n'est pas constructible par défaut. 2) est un peu compliqué, mais vous n'avez pas à le faire vous-même puisque std::vector
l'a déjà implémenté pour vous. Vous devriez utiliser un vecteur de toute façon puisqu'il prend en charge la gestion de la mémoire.
Un exemple avec un vecteur, qui est analogue à votre "situation normale". Notez que votre « situation normale » ne correspond pas à la description dans votre question:
std::vector<MyClass> v{
{x1, y1},
{x2, y2},
...
};
Un exemple avec le vecteur, qui correspond à votre description de passer même argument à tous les objets du tableau.Bien que techniquement, cette copie-construit les éléments du tableau:
std::vector<MyClass> v(5, {x, y});
Pourquoi pensez-vous que vous avez besoin de créer le tableau en utilisant 'new'? –
@NeilButterworth C'est parce que dans le code j'ai besoin de générer * obj dans un fichier et affecter l'objet par la suite. Il y a d'autres façons de le faire? – nostyn
Votre "situation normale" ne fait pas ce que vous pensez qu'elle est en train de faire. Seul l'élément * premier * tableau sera 'MyClass (x, y)'. –