Bonjour, je suis en train d'essayer de faire une spécialisation partielle d'un constructeur: je veux qu'il puisse être défini dans le template pour être d'un type ou de void.
Voilà, pour le constructeur, je dois appeler le constructeur parent, qui lui peut ou ne pas avoir un paramètre. Evidemment, un paramètre void nommé, ca ne fonctionne pas, donc je dois spécialiser le template pour accepter aussi les paramètres void.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 namespace kage { //! \template InstanceOf //! @brief instance of a definition template< class _Self, class _Definition, class _Base = KAGE_EMPTY<_Self>, typename _Param = void, class _DefPtr = KAGE_WP(_Definition) > class InstanceOf : public _Base { _DefPtr _definition; public: friend class _Definition; _DefPtr getDefinition() { return _definition; } protected: InstanceOf(_Param p); public: virtual ~InstanceOf() {} }; } //namespace kage
Autant dire que si je poste ca ici, c'est que ca ne fonctionne pas. D'où mes questions: est-ce que ce que je veux faire est possible? si oui, quelle serait la syntaxe ou la facon correcte de s'y prendre? Sinon, ben quelles autres solutions y-a-t'il ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 template< class _Self, class _Definition, class _Base, typename _Param, class _DefPtr > kage::InstanceOf< _Self, _Definition, _Base, _Param, _DefPtr>::InstanceOf(_Param p) : _Base(p) { } template< class _Self, class _Definition, class _Base, class _DefPtr > kage::InstanceOf< _Self, _Definition, _Base, void, _DefPtr>::InstanceOf(void) : _Base() { }
Partager