小编Mar*_*rda的帖子

隐藏模板类中的成员函数

是否可以在模板类中隐藏一些成员函数?让我们想象我们有类似的东西:

template <class T>
class Increment
{
public:
    void init(T initValue)
    {
         mValue = initValue;
    }  

    T increment()
    {
        ++mValue;
    }

    T increment(T delta)
    {
        mValue += delta;
    }
private:
    T mValue;
};
Run Code Online (Sandbox Code Playgroud)

目标是使用这个类,在某些情况下我们只看到increment()函数,在其他情况下我们只看到increment(T)成员函数.要做到这一点,我可以考虑SFINAE的一些事情:

class MultipleIncrement
{
    typedef int MultipleIncrement_t;
};

class SingleIncrement
{
    typedef int SingleIncrement_t;
};

template <class T, class Q>
class Increment
{
public:
    void init(T initValue)
    {
        mValue = initValue;
    }

    T increment(typename Q::SingleIncrement_t = 0)
    {
        ++mValue;
    }

    T increment(T delta, typename Q::MultipleIncrement_t = 0) …
Run Code Online (Sandbox Code Playgroud)

c++ templates hide sfinae

7
推荐指数
1
解决办法
1230
查看次数

标签 统计

c++ ×1

hide ×1

sfinae ×1

templates ×1