是否可以进行以下设计?:
template <typename T>
class Test{
public:
template <typename Z>
void doSomething();
//rest of things
private:
T obj;
//some things
};
现在,如果可能的话,我会为 doSomething 做一些明确的专业化,这样最后我会有一些如下版本:
void doSomething<int>(){
//do something
}
void doSomething<double>(){
//do something
}
...etc
这似乎是不可能的,我找不到任何语法来完成这项工作,然后我想也许设计应该如下所示,以便所有模板参数都应该传递给模板类本身:
template <typename T,typename Z>
class Test{
public:
void doSomething();
//rest of things
private:
T obj;
//some things
};
然后我尝试了部分专业化,它甚至没有编译:
template <typename T>
void Test<T,int>::doSomething(){
//do something
}
template <typename T>
void Test<T,double>::doSomething(){
//do something
}
...etc
我得到以下显式专业化错误:
错误#1:类模板名称后面的模板参数列表必须按照模板参数列表中使用的顺序列出参数。
错误#2:'Container1':模板参数太少。