Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Указатели на функцию
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > IAR
_Артём_
Пример:

Код

typedef void (*FunctionPtr) (void);

FunctionPtr FPtr;

struct TStructure {
    void Function(void);
};

void TStructure::Function(void)
{}

void Function(void)
{}

struct TStructure TestStructure;


Если присвоить FPtr адрес Function то компилируется без ошибок:
Код
FPtr=&Function;
FPtr();


а такой вариант вызывает ошибку:
Код
FPtr=&TestStructure.Function;
FPtr();


Разве такое присвоение невозможна в C++?
Или это ограничение IAR-а?
Сергей Борщ
Цитата(_Артём_ @ Apr 9 2007, 22:54) *
а такой вариант вызывает ошибку:
Код
FPtr=&TestStructure.Function;
FPtr();
Вы пытаетесь присвоить одной переменной сразу два указателя: на класс (TestStructure) и на метод этого класса (Function).
Цитата(_Артём_ @ Apr 9 2007, 22:54) *
Разве такое присвоение невозможна в C++?
Или это ограничение IAR-а?
IAR как обычно не при чем. Виноват С++.
8.2.3 Указатели на члены
FAQ: C++. Указатель на ф-ию - метод класса
Попробуйте описать, зачем это надо и мы попробуем посоветовать как решить - пара указателей, несколько классов с общим предком и ( FPtr->Function(); ) или TestStructure.*FPtr();
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.