Bonjour, j'ai sûrement un problème de conception mais j'aimerai comprendre pourquoi.
J'ai défini la classe suivante
et je voudrais faire ça:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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); };
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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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;
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
Partager