C++ 相等运算符:指向成员函数的指针
在我的一个类中,我包含了一个指向成员函数的指针:C++ 相等运算符:指向成员函数的指针,c++,pointers,C++,Pointers,在我的一个类中,我包含了一个指向成员函数的指针: private: void (class_name::*_pf)(double&, gc::mag::coefficient&, gc::mag::st&, const int&) const; 此指针指向类class\u name的function1或function2 现在,当我有两个classclass\u name对象时,如何检查\u pf指针是否指向同一个成员函数(即,它们都指向function1还是f
private:
void (class_name::*_pf)(double&, gc::mag::coefficient&, gc::mag::st&, const int&) const;
此指针指向类class\u name
的function1
或function2
现在,当我有两个classclass\u name
对象时,如何检查\u pf
指针是否指向同一个成员函数(即,它们都指向function1
还是function2
)?这应该足够了:
if (this->_pf == other._pf)
例如:
#include <iostream>
class class_name
{
public:
void function1(int) {}
void function2(int) {}
};
class test
{
public:
test(void (class_name::*pf)(int))
: _pf(pf)
{
}
bool operator==(const test& other)
{
return (this->_pf == other._pf);
}
public:
void (class_name::*_pf)(int);
};
int main()
{
test t(&class_name::function1);
test t2(&class_name::function2);
std::cout << std::boolalpha << (t == t2) << std::endl;
return 0;
}
#包括
类名
{
公众:
无效函数1(int){}
无效函数2(int){}
};
课堂测试
{
公众:
测试(无效(类别名称::*pf)(int))
:_pf(pf)
{
}
布尔运算符==(常数测试和其他)
{
返回(此->\u pf==其他.\u pf);
}
公众:
无效(类别名称::*(内部);
};
int main()
{
测试t(&class_name::function1);
测试t2(&class_name::function2);
Std::Cube虽然C++允许使用这种方法,但它听起来像是一个基类,它由一个虚拟成员派生,而其他两个类实现两种类型的函数将是一个更好的方法。现代C++的用法是远离指针的直接使用,因为它是缺陷的根源。ike是一个棘手的代码,它将成为缺陷的来源。当您有两个函数指针时,您可以简单地将它们与if(\u pf1==\u pf2)
进行比较。请注意,这与classclass\u name
的任何实例完全无关。