Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.09.2011, 22:47   #1
systemmind
Пользователь
 
Регистрация: 06.02.2009
Сообщений: 41
По умолчанию Не удается получить указатель на метод

Здравствуйте.
Вроде все сделал, как написано в интернете, но компилятор (IAR) ругается.

Код:
class OBJECT{
public:
  OBJECT(){i=0;}
  bool Method1(uchar temp){
    i++;
    return 1;
  }
  void Method2(uchar data){};
  unsigned char i;

  
};


typedef bool (OBJECT::*pMethod)(uchar);  

int main()
{

  pMethod pFunMeth=&OBJECT::Method1;  //объявляю указатель на метод1 класса OBJECT
  
  OBJECT Obj;
  Obj.*pFunMeth(2);  //здесь хочу вызвать метод, но вылетает ошибка
  
  return 0;
}
Ошибка: Error[Pe109]: expression must have (pointer-to-) function type

Не в компиляторе ли дело?
systemmind вне форума Ответить с цитированием
Старый 22.09.2011, 22:57   #2
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Цитата:
Сообщение от systemmind Посмотреть сообщение
Здравствуйте.
Вроде все сделал, как написано в интернете, но компилятор (IAR) ругается.

Код:
class OBJECT{
public:
  OBJECT(){i=0;}
  bool Method1(uchar temp){
    i++;
    return 1;
  }
  void Method2(uchar data){};
  unsigned char i;

  
};


typedef bool (OBJECT::*pMethod)(uchar);  

int main()
{

  pMethod pFunMeth=&OBJECT::Method1;  //объявляю указатель на метод1 класса OBJECT
  
  OBJECT Obj;
  Obj.*pFunMeth(2);  //здесь хочу вызвать метод, но вылетает ошибка
  
  return 0;
}
Ошибка: Error[Pe109]: expression must have (pointer-to-) function type

Не в компиляторе ли дело?
Нет, не в компиляторе. А дело в том, что вызов функции ("()") имеет высший приоритет, нежели разыменование указателя на метод, потому нужно писать так:
Код:
(Obj.*pFunMeth)(2);
netrino вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Turbo Pascal[програмыки : текстовая\метод симпсона\метод половинного деления qsccsq Помощь студентам 7 24.12.2010 05:23
Не удается получить все куки kakawkin Работа с сетью в Delphi 2 09.10.2010 00:13
Не удается зарегистрироваться NNN32 Работа с сетью в Delphi 2 13.07.2010 09:15
Не удается зарегенится NNN32 PHP 0 09.07.2010 16:20
Указатель на метод класса _Art_ Общие вопросы C/C++ 6 03.04.2010 01:45