我在互联网和stackoverflow上寻找了很久,但似乎找不到一个具体的答案。我需要创建一个通用类,然后实现特定的函数。我的具体指令是:您需要使用模板表达式参数、模板类特化和部分特化。
我有一个模板类:
template <class T, int x, int y>
class Z {
T **array[x][y];
public:
Z();
void print();
//and other methods
};
我需要做以下的事情:
1)只有当X=2且Y=2时,Z才需要有一个公共方法void J()
2)对于X=2且Y=2的char Z,J将执行某些操作;而对于其他所有内容,它将执行其他操作
3)仅对于T为char的Z,数组才会被初始化为某个值。对于其他所有内容,它都是0
显然,这是有效的:
template<class T, int x, int y>
Z<T,x,y>::Z<T,x,y>() { //initialize to 0 }
但是这个不行:
template<int x, int y>
Z<char,x,y>::Z<char,x,y>() { //initialize to something}
同样地(假设 J 存在),这个也不起作用:
template <class T>
void Z<T,2,2>::J() { //something }
我的问题是:
有没有一种简单的方法来实现上述项目?我需要保留Z中的所有其他方法。给出一些提示或指向正确方向的建议(也许我错过了某个问题,因为有很多问题),这将会很有帮助。
谢谢。
J
是什么?不清楚你想做什么。 - Synxisclass Z<char, x, y>'" 和 "template definition of non-template
void Z<char, x, y>::J()' " - aoi