這是我的問題:專營C++類的成員函數對於模板類
我有一個CC級,我想專注一類的成員方法對於另一個模板類(模板參數)。 一個例子:
#include <iostream>
#include <string>
#include <complex>
template<class T>
class cc {
public:
void foo() ;
T v ;
};
template<class T> // OK, generic definition of foo()
void cc<T>::foo() {
std::cout << v << std::endl ;
}
////////////////////////////////////////////////////////////////////
// ERROR! can not accept the the specialization respect to a
// complex<TT> with a template argument.
template<class TT>
void cc< std::complex<TT> >::foo() {
std::cout << "complex t " << v << std::endl ;
}
////////////////////////////////////////////////////////////////////
template<> // OK! specialization respect to a complex<double>
void cc< std::complex<double> >::foo() {
std::cout << "complex " << v << std::endl ;
}
template<> // OK!
void cc<double>::foo() {
std::cout << "double: " << v << std::endl ;
}
int main()
{
cc< std::complex<double> > r ;
cc<double> r2 ;
r.foo() ;
r2.foo() ;
}
在C++中是複雜的模板類型,所以想要寫的成員函數,與每一個複雜<類型>其中類型是任何模板類型的作品。 有可能嗎?
模板功能部分專業化是不允許的。 – bolov