Tableau de template avec constructeur privé
Bonjour, j'ai sûrement un problème de conception mais j'aimerai comprendre pourquoi.
J'ai défini la classe suivante
Code:
1 2 3 4 5 6 7 8 9 10
|
template <class T>
class Property
{
public:
Property(unsigned int i_type_mask, T i_value, int i_array_size = -1);
~Property(void);
private:
Property(void);
}; |
et je voudrais faire ça:
Code:
1 2 3 4 5 6
|
Property<int> prop1(INT, 10, -1);
Property<int> prop2(INT, 20, -1);
Property<int> *prop3 = new Property<int>[2];
prop3[0] = prop1;
prop3[1] = prop2; |
Voilà, c'est simple mais ça ne compile pas car le constucteur par défaut est privé (donc je peux pas créer mon tableau prop3) + j'ai le même résultat si j'enlève la déclaration du constucteur par défaut.
Je sais que je pourrais m'en sortir avec une liste ou un vecteur mais j'aimerai comprendre pourquoi je ne peux pas le faire. Je veux interdire l'utilisation du constructeur par défaut car je ne peux pas initialiser par défaut les variables membres.
Est-ce qu'il existe un design pattern ou autre chose permettant de faire ça?
Je pense que c'est possible si ma classe elle-même constuit le tableau (à la manière d'un singleton) mais y'a-t'il une autre solution? est-ce que j'utilise mal les templates?
merci