检查类是否具有给定签名的成员函数是一个常见的编程任务,通常需要使用反射或类似的技术来实现。在C++中,可以使用std::is_member_function_pointer
和std::is_same
来检查类是否具有给定签名的成员函数。
以下是一个示例代码:
#include<iostream>
#include <type_traits>
class MyClass {
public:
void myFunction(int x) {
// ...
}
};
template<typename Class, typename Function>
bool hasMemberFunction(const char* functionName) {
return std::is_same<decltype(&Class::myFunction), Function>::value;
}
int main() {
std::cout<< hasMemberFunction<MyClass, void(MyClass::*)(int)>("myFunction")<< std::endl;
return 0;
}
在上面的代码中,hasMemberFunction
模板函数接受一个类和一个函数类型,并检查该类是否具有给定签名的成员函数。如果有,则返回true
,否则返回false
。在main
函数中,我们使用hasMemberFunction
来检查MyClass
类是否具有void(MyClass::*)(int)
签名的成员函数,并将结果输出到控制台。
领取专属 10元无门槛券
手把手带您无忧上云