|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
01.04.2010, 13:43 | #1 |
Регистрация: 18.12.2009
Сообщений: 9
|
Указатель на метод класса
Всем доброе утро!
В объявлении класса SignalMathHandler объявляю указатель на метод этого же класса : bool (__thiscall SignalMathHandler::* funcPointer)(); указываю явно __thiscall, тк указатель по умолчанию создается на функцию с соглашением __cdecl. метод соответственно таков: .h: bool signalAnalysis(); .cpp: bool SignalMathHandler::signalAnalysis() { return true; } присваиваю метод указателю и пытаюсь вызвать: funcPointer = &SignalMathHandler::signalAnalys is; (*funcPointer)(); \signalmathhandler.cpp(116) : error C2171: '*' : illegal on operands of type 'bool (__thiscall SignalMathHandler::* )(void)' \signalmathhandler.cpp(116) : error C2064: term does not evaluate to a function taking 0 arguments или funcPointer() error C2064: term does not evaluate to a function taking 0 arguments Подскажите, пожалуйста как сделать? Заранее спасибо! |
01.04.2010, 17:34 | #2 |
C++ hater
СтарожилДжуниор
Регистрация: 19.07.2009
Сообщений: 3,333
|
а как ты собрался вызвать пусть даже указатель на функцию без объекта? если конечно твоя функция не статическая
Код:
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay
My other car is cdr. Q: Whats the object-oriented way to become wealthy? A: Inheritance |
01.04.2010, 18:52 | #3 |
Регистрация: 18.12.2009
Сообщений: 9
|
Уже разобрался. Это не билдер, а VS. Указатель на метод - private, так что вызывать не пытался, но можно попробовать..
Надо было сделать так: (this->*funcPointer)(); |
01.04.2010, 18:55 | #4 |
Регистрация: 18.12.2009
Сообщений: 9
|
А без объекта я и не пытался, код (*funcPointer)(); писал для вызова из метода класса, видимо не совсем корректно поставил вопрос...
|
01.04.2010, 18:55 | #5 | |
C++ hater
СтарожилДжуниор
Регистрация: 19.07.2009
Сообщений: 3,333
|
Код:
я так и не понял, зачем указатель на метод создавать с указанием thiscall. твой метод так же описан? или у тебя по умолчанию все методы через thiscall вызываются? если так, то зачем? Цитата:
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay
My other car is cdr. Q: Whats the object-oriented way to become wealthy? A: Inheritance |
|
03.04.2010, 01:26 | #6 | |
Регистрация: 18.12.2009
Сообщений: 9
|
Цитата:
Если ошибаюсь, поправьте... |
|
03.04.2010, 01:45 | #7 | |
C++ hater
СтарожилДжуниор
Регистрация: 19.07.2009
Сообщений: 3,333
|
мне кажется, что студия (да и любой ++ компилятор) сама пронюхает, что это не просто функция, а метод, поэтому соглашение о вызове само подставится. во всяком случае я никогда явно не указывал (за исключением экспортируемых функций из библиотек и тп)
пс. я кстати сначала перепутал thiscall с fastcall. кстате вот чо пишут Цитата:
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay
My other car is cdr. Q: Whats the object-oriented way to become wealthy? A: Inheritance Последний раз редактировалось pproger; 03.04.2010 в 01:50. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как в базовом классе описать указатель на объект производного класса? | MasterGH | Общие вопросы C/C++ | 3 | 16.11.2009 02:55 |
Метод Synchronize класса TThread | EdNovice | Общие вопросы Delphi | 10 | 01.08.2009 14:47 |
Метод класса | REztor | Помощь студентам | 2 | 14.04.2009 17:10 |
Метод к полям класса; | vovunisaev | Общие вопросы C/C++ | 2 | 08.04.2009 14:19 |
Метод без класса | Altera | Общие вопросы Delphi | 12 | 24.12.2008 15:22 |