C++ 指向成员函数的指针
}) 有时我需要返回x坐标,有时需要返回y坐标,所以我使用指向成员函数getX(),getY()的指针。但我不能返回坐标,请看下面C++ 指向成员函数的指针,c++,function,member,C++,Function,Member,}) 有时我需要返回x坐标,有时需要返回y坐标,所以我使用指向成员函数getX(),getY()的指针。但我不能返回坐标,请看下面 I have the following class: class Point2D { protected: double x; double y; public: double getX() const {return this->x;} do
I have the following class:
class Point2D
{
protected:
double x;
double y;
public:
double getX() const {return this->x;}
double getY() const {return this->y;}
...
谢谢您的帮助。您需要使用
->*
操作符通过指针调用成员函数:
double ( Point2D :: *getCoord) () const;
class Process
{
......
public processPoint(const Point2D *point)
{
//Initialize pointer
if (condition)
{
getCoord = &Point2D::getX;
}
else
{
getCoord = &Point2D::getY;
}
//Get coordinate
double coord = point->( *getCoordinate ) (); //Compiler error
}
}
对于稍微复杂一点的情况,我会使用状态(状态模式),但对于这一点,它似乎没问题(现在James已经给出了解决方案)
(point->*getCoordinate)();