ciao.
Ho questo esempio:
.h:
.cppcodice:#pragma once #include <string> #include <iostream> template <typename T> class CProva { public: CProva<T>(); T setx(T val); }; template <> class CProva <int> { public: CProva<int>(){}; int setx(int val); void pp(); };
ottengo quest'errore in vc 9(vs 2008):codice:#include "StdAfx.h" #include "Prova.h" #include <stdio.h> #include <iostream> using namespace std; template <typename T> CProva<T>::CProva(void) { } template <typename T> T CProva<T>::setx(T val) { return 1; } template <> int CProva<int>::setx(int val) { return 2; }
Error 2 error C2910: 'CProva<int>::setx' : cannot be explicitly specialized c:\template\template\prova.cpp 26
se invece metto tutto nel .h funziona correttamente.
Ora quello che voglio capire è dove devo mettere la dichiarazione e dove l'implementazione quando uso i template.
poi ho visto in librerie o esempi le estensioni .cxx o .hxx , so che è semplicemente un estensione ma hanno un significato particolare relativo ai templates?
grazie.
ciao.