我想为一堆重载函数创建一个包装
void print(int i);
void print(long i);
void print(char* s);
...
void myPrint(int x, int y, ??? toPrint){
moveTo(x,y);
print(toPrint);
}
我该怎么做?可以不用模板吗?
我想为一堆重载函数创建一个包装
void print(int i);
void print(long i);
void print(char* s);
...
void myPrint(int x, int y, ??? toPrint){
moveTo(x,y);
print(toPrint);
}
我该怎么做?可以不用模板吗?
如果您不能使用模板,您可以采用与myPrint
您相同的方法print
。
void myPrint(int x, int y, int toPrint){
moveTo(x,y);
print(toPrint);
}
void myPrint(int x, int y, long toPrint){
moveTo(x,y);
print(toPrint);
}
void myPrint(int x, int y, char* toPrint){
moveTo(x,y);
print(toPrint);
}
由于您正在进行嵌入式编码,因此您也可以原谅自己使用宏。
#define MYPRINT( x, y, toPrint ) \
do { \
moveTo(x,y); \
print(toPrint); \
} while(false)
我想你可以写三个单独的包装器。它相当于模板将产生的内容(即有点代码膨胀)。
void myPrint(int x, int y, int toPrint) {
moveTo(x,y);
print(toPrint);
}
void myPrint(int x, int y, long toPrint) {
moveTo(x,y);
print(toPrint);
}
void myPrint(int x, int y, char *toPrint) {
moveTo(x,y);
print(toPrint);
}
我不一定推荐这个,因为代码隐藏宏现在非常不受欢迎,但您可以使用预处理器宏作为模板替换。
#define DEFINE_MY_PRINT(Type) \
void myPrint(int x, int y, Type toPrint) { \
moveTo(x,y); \
print(toPrint); \
}
DEFINE_MY_PRINT(int)
DEFINE_MY_PRINT(long)
DEFINE_MY_PRINT(char *)
模板将是首选,但您可以(ab)使用预处理器:
#define MY_PRINT(T) void myPrint(int x, int y, T toPrint) \
{ \
moveTo(x,y); \
print(toPrint); \
}
MY_PRINT(int)
MY_PRINT(long)
MY_PRINT(char*)