реклама на сайте
подробности

 
 
> Есть ли С++(осоьенно в IAR С++) возможность
_Артём_
сообщение Feb 9 2012, 13:36
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Есть ли С++(особенно интересует для IAR С++) возможность сделать указатель на метод экземпляра класса?
Ну или способ сделать тоже как-то по другому.

Из EWAVR_CompilerReference.pdf:
Цитата
POINTER TO MEMBER FUNCTIONS
A pointer to a member function can only contain a default function pointer, or a function
pointer that can implicitly be casted to a default function pointer. To use a pointer to a
member function, make sure that all functions that should be pointed to reside in the
default memory or a memory contained in the default memory.
Example
class X
{
public:
__nearfunc void F();
};
void (__nearfunc X::*PMF)(void) = &X::F;


Но пока что-т не получается использовать (или это пример не о том?).
Спасибо.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
neiver
сообщение Feb 9 2012, 15:46
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 214
Регистрация: 22-03-10
Из: Саратов
Пользователь №: 56 123



Есть и прекрасно работают.
Код
class Foo
{
public:
  void A()
  {
      PORTA = 0;
  }
  void B()
  {
      PORTA = 0xff;
  }
};
// тип указателя на функцию член Foo, возвращающую void и не принимающую аргументов
typedef void (Foo::*FooFuncPtr)();

int main()
{
// экземпляр класса Foo
  Foo foo;
// fPtr указывает на Foo::A
  FooFuncPtr fPtr = Foo::A;
// вызываем Foo::A через указатель для объекта foo
  (foo.*fPtr)();
// fPtr указывает на Foo::B
  fPtr = Foo::B;
// вызываем Foo::B через указатель для объекта foo
  (foo.*fPtr)();
  return 0;
}
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 24th June 2025 - 10:05
Рейтинг@Mail.ru


Страница сгенерированна за 0.01423 секунд с 7
ELECTRONIX ©2004-2016