如何直接调用类静态函数




假设我有这样的东西:

标题.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(***);但正如你所看到的,这很荒谬。更不用说此功能应该是用户干扰的一部分。我不能指望我的代码的"用户"在他\她想调用detail::HiddenClass<T>::function(***);时写function(***);

我试过了:

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

还有其他类似的方法,但我惨败了......

任何人都可以以某种方式提供帮助?建议一些东西

你可以提供一个宏来缩短调用语法:

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

然后,它从全局命名空间的使用将短得多,并且不需要using

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

最新更新