Указатель на функцию-член

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;}
   ...

};

Иногда мне нужно вернуть координату x, иногда координату y, поэтому я использую указатель на функцию-член getX(), getY(). Но я не могу вернуть координату, см. ниже, пожалуйста.

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

   }

}

Спасибо за вашу помощь.


person Ian    schedule 18.11.2010    source источник
comment
для немного более сложных ситуаций я бы использовал состояния (шаблон состояния), но для этого, кажется, все в порядке (теперь, когда Джеймс дал решение)   -  person stefaanv    schedule 18.11.2010


Ответы (1)


Вам нужно использовать оператор ->* для вызова функции-члена через указатель:

(point->*getCoordinate)(); 
person James McNellis    schedule 18.11.2010