如何直接调用类静态函数

时间:2017-03-29 08:57:31

标签: c++ class namespaces


让我们说我有这样的事情:

Header.h:

namespace detail {

    template <typename T>
    class HiddenClass {

        /* Bunch of things... */

        template <typename ...ArgList>
        static HiddenClass<T> & function (const ArgList & ... argTail) {
            // Do something...
        }
    }
}

我想打电话给detail::HiddenClass<T>::function(***);,但你可以看到这很荒谬。更不用说这个功能应该是用户干扰的一部分。我不能指望&#34;用户&#34;每当他想要致电detail::HiddenClass<T>::function(***);时发送function(***);我的代码。{/ p>

我试过:

template <typename T>
using detail::HiddenClass<T>::function;

和其他方法一样,但我失败了......

任何人都能以某种方式提供帮助?建议

1 个答案:

答案 0 :(得分:1)

您可以提供一个缩短调用语法的宏:

#define MY_FUNCTION(Type, Arg) detail::HiddenClass<Type>::function(Arg)

然后,它在全局命名空间中的使用会更短,而且不需要using

HiddenClass<SomeType>& rc = MY_FUNCTION(SomeType, argTail);