
[英]How can I call a non-static member function of a class from a static member function of another class?
[英]How to call class static function directly
假设我有这样的事情:
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(***);
但是如您所见,这太荒谬了。 更不用说该功能应该是用户干扰的一部分。 我不能指望代码的“用户”写出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);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.