我想将以下宏更改为c ++ 03中的模板。 将这种类型的宏更改为模板化函数是否有用? 方法指针在这里有用吗?
最佳方法是什么?使用MACRO或模板是否是更好的方法来实现这一目标?
namespace BP{
class PrintClass{
public:
PrintClass(){}
void printOne(int i) const{
std::cout << "1" << i << "\n";
}
void printTwo(int i) const{
std::cout << "2" << i << "\n";
}
};
class TestClass{
private:
int d_one;
int d_two;
public:
TestClass() : d_one(1), d_two(2){}
const int getOne() const{
return d_one;
}
const int getTwo() const {
return d_two;
}
};
}
#define PRINT_MACRO(print, NUM) \
{\
TestClass t; \
int r = t.get##NUM();\
print(r);\
}
int main(){
using namespace BP;
PrintClass p;
PRINT_MACRO(p.printOne, Two);
PRINT_MACRO(p.printTwo, One);
return 0;
}