
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
06.04.2007, 22:53
|
|||
|---|---|---|---|
Траблы с указателем на функцию |
|||
|
#18+
Есть функция (в .h заголовке), которую я вызываю из DLL. Код: plaintext Второй параметр - это указатель на callback-функцию, которую нужно описать и реализовать самому. Собсно код: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. Ругается - cannot convert parameter 2 from 'void (struct tagDATA *)' to 'void *' Если же сделать так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. То все ок... Не вкуриваю я эту тему :) Просьба не пинать, в С++ я можно сказать ламер. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
07.04.2007, 00:30
|
|||
|---|---|---|---|
Траблы с указателем на функцию |
|||
|
#18+
Ругается - cannot convert parameter 2 from 'void (struct tagDATA *)' to 'void *' 1) Делать "this->data" нельзя. а вот "&CDataLoader::data" можно. Подробности в справке в разделе pointers to members. Но только работать оно не будет так как надо (см пункт 2) 2) Метод класса при вызове неявно передает указатель this. Т.е. функция должна быть статичной, либо не входить в класс, чтобы работать как Callback. ЗЫ. Это уже где-то обсуждалось на форуме... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
07.04.2007, 10:55
|
|||
|---|---|---|---|
Траблы с указателем на функцию |
|||
|
#18+
Гм, сделал функцию статической - все ок. Другая проблема. Все атрибуты класса, с которыми она работает, я тоже сделал статическими. Когда я пытаюсь их использовать в этой функции, вылетает ошибка: DataLoader.obj : error LNK2001: unresolved external symbol "public: static int CDataLoader::m_test" (?m_test@CDataLoader@@2HA) Код: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. Спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
07.04.2007, 11:11
|
|||
|---|---|---|---|
Траблы с указателем на функцию |
|||
|
#18+
RivenГм, сделал функцию статической - все ок. Другая проблема. Все атрибуты класса, с которыми она работает, я тоже сделал статическими. Когда я пытаюсь их использовать в этой функции, вылетает ошибка: DataLoader.obj : error LNK2001: unresolved external symbol "public: static int CDataLoader::m_test" (?m_test@CDataLoader@@2HA) Код: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. Спасибо! Правильно тебя обругали, ты не определил переменную CDataLoader::m_test, не отвел под нее компилятор места. А чтобы определить ее в cpp вне тела методов и функций надо написать int CDataLoad::m_test = 0; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=57&mobile=1&tid=2029084]: |
0ms |
get settings: |
4ms |
get forum list: |
12ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
149ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
33ms |
get tp. blocked users: |
1ms |
| others: | 208ms |
| total: | 420ms |

| 0 / 0 |
