小编use*_*182的帖子

用函数/模板替换宏

我想用函数/模板替换宏:

#define FOO( f ) \
    int result = m_Member.f; \
    switch ( result ) \
    { \
    case 1: \
        m_pMember1->f; \
        break;
    case 2:
        m_pMember2->f; \
        break;
    }

class foo
{
public:
    void foo1(int x, int y)
    {
        FOO( foo1(x, y) )
    }
    void foo2(int x, double y, void *z)
    {
        FOO( foo2(x, y) )
    }
protected:
    fooA m_Member;
    fooB m_Member1;
    fooC m_Member2;
};
Run Code Online (Sandbox Code Playgroud)

所以我的问题是函数名称与参数一起传递给宏。我可以重写对 FOO( foo1, x, y ) 之类的调用,然后处理变量参数列表。所以宏将只定义一个函数调用。但也许有更优雅的解决方案。

c++ macros

5
推荐指数
1
解决办法
2776
查看次数

标签 统计

c++ ×1

macros ×1