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

 
 
 
Reply to this topicStart new topic
> Указатели на функцию
_Артём_
сообщение Apr 9 2007, 23:54
Сообщение #1


Гуру
******

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



Пример:

Код

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, 23:55
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Apr 10 2007, 00:13
Сообщение #2


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(_Артём_ @ 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();


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post

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

 


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


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