ciao.
Ho questo esempio:
.h:
codice:
#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();
};
.cpp
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;
}
ottengo quest'errore in vc 9(vs 2008):
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.