Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > Вызов метода класса по ссылке на него(Borland C++)


Автор: silversmith 28.1.2010, 20:14
Объявлен указатель на метод класса следующим образом
Код

class Myclass;
typedef void (Myclass::*func)(void);


затем в самом классе содержится объявление указателя и метода:
Код

class Myclass{
public:
     func action;
     void function(void){
          //здесь выполняются какие-то действия
     }
     void tryfuncpointer{
          action = &Myclass::function;
     }
}


Вопрос в том - как вызвать теперь функцию-член класса function по указателю action. Пробовал разные варианты action(), (*action)(), (Myclass::action)(), (Myclass::*action)() и т.п. но ни один из них компилятор не пропускает говоря, что оператор () не может быть применен к указателю на член класса action.

Автор: NewDima 28.1.2010, 20:29
нужно указать экземпляр класса, в контексте которого требуется выполнить метод, например так:
Код

(this->*action)();

Автор: silversmith 28.1.2010, 20:47
Мда, ларчик просто открывался. Спасибо smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)