Comment faire la spécialisation sur un constructeur de modèle? Aux fins d'une meilleure compréhension, je fais venir un exemple de code:Comment spécialiser un gabarit de constructeur de gabarit?
template<typename T>
class Stack {
private:
int nelem;
int size;
vector<T> stack;
public:
~Stack();
Stack<T>(int t);
void push(T data);
T pop();
T top();
int getPosTop(){return (nelem--);};
void cleanStack(){nelem = 0;};
bool StackEmpty(){ return (nelem == 0);};
bool StackFull(){ return (nelem == size);};
};
template <typename T> // constructor definition here
Stack<T>::Stack<T>(int t){
size = t;
nelem = 0;
};
int main(){
return 0;
}
Il est venu avec beaucoup d'erreurs. Ensuite, je lis sur un autre poste, une suggestion, qui remplaçait
template <typename T>
Stack<T>::Stack<T>(int t){
à
template <typename T> template <typename T> Stack<T>::Stack<T> (int t){
qui n'a pas été suffisante.
Qu'est-ce qui me manque? Et, quelle est la pensée derrière tout cela?
Vous ne pouvez pas spécialisez constructeur, car le constructeur n'est pas un modèle. C'est une méthode non template d'un template de classe. –