如何解决获取类成员函数中的参数数量
我正在尝试获取类成员函数中的参数数量。
template <typename R,typename ... Types>
constexpr std::integral_constant<unsigned,sizeof ...(Types)>
FuncArgCount(R(*f)(Types ...))
{
return std::integral_constant<unsigned,sizeof ...(Types)>{};
}
class TestClass
{
public:
TestClass(){}
void On_Test(size_t v)
{}
void Call()
{
std::cout<< FuncArgCount(&TestClass::On_Test)::value;
}
};
上面的模板实现是从此线程中获取的,在非成员函数Get function parameters count
上效果很好解决方法
首先,您必须重载指向成员的指针。指向成员的指针实际上不是指针,它们是表示类型内偏移量的独立类型。
template <typename R,typename T,typename ... Types>
constexpr std::integral_constant<unsigned,sizeof ...(Types)>
FuncArgCount(R(T::*)(Types ...))
{
return std::integral_constant<unsigned,sizeof ...(Types)>{};
}
第二,输出行应使用.
而不是::
std::cout<< FuncArgCount(&TestClass::On_Test).value;
或者您可以直接从函数返回该值,这是一种更合乎逻辑的方法。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。