C ++ 03将宏更改为模板

时间:2016-11-10 19:21:51

标签: c++ templates

我想将以下宏更改为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;
}

0 个答案:

没有答案