2010-06-11 3 views
0

À titre d'exemple que j'ai une classe foo qui ne dispose pas d'un constructeur par défaut mais qui ressemble à ceL'utilisation nouvelle d'affecter un ensemble d'éléments de classe avec un constructeur surchargé en C++

foo:foo(int _varA,int _varB) 
{ 
    m_VarA = _varA; 
    m_VarB = _varB; 
} 

Comment pourrais-je allouer un tableau de ceux-ci.

Je me souviens d'avoir essayé de faire quelque chose comme ça sans succès.

foo* MyArray = new foo[100](25,14). 

Je ne pense pas que cela fonctionnera non plus.

foo* MyArray = new foo[100](25,14) 

Est-ce que cela peut être fait? Je le fais généralement en écrivant le constructeur par défaut en utilisant des valeurs prédéfinies pour _varA et _varB. Puis ajouter une fonction pour réinitialiser _varA et _varB pour chaque élément mais cela ne fonctionnera pas pour ce cas.

Merci pour l'aide.

Répondre

2

Si vous devez être en mesure d'allouer un tableau d'une classe (directement, en utilisant new[]) , la classe doit avoir un constructeur par défaut. Pas de constructeur par défaut, pas de tableaux dynamiques.

5

Votre premier choix devrait être d'ignorer le fait que new[] existe même, et d'utiliser un std::vector à la place:

std::vector<foo> MyArray(100, foo(25,14)); 
+0

Excellent conseil. Pourquoi s'inquiéter de tous les détails pour obtenir le placement juste quand vous pouvez utiliser une implémentation connue et testée? –

Questions connexes