|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
24.03.2010, 18:26 | #1 |
Регистрация: 24.03.2010
Сообщений: 5
|
Вызов функции по указанному адресу
Здравствуйте! Очень нужна помощь.
Мне нужно передать в статическую функцию в классе адрес этого класса и из этой функции вызывать нестатичную функцию этого класса по переданному адресу со смещением. //heder file class MyClass { private: MyClass(void); ~MyClass(void); static DWORD WINAPI func1 (LPVOID Arg); DWORD WINAPI func2 (void); } // cpp file MyClass::MyClass(void) { func1(this); // передаю в статичную функцию адрес моего класса } MyClass::~MyClass(void) { } DWORD WINAPI func1 (LPVOID Arg) { return Arg->func2(); // по идее надо вот так, но выдаёт ошибку } DWORD WINAPI func2 (void) { ........ } если конкретно то мне надо создать поток как вот тут... http://msdn.microsoft.com/en-us/library/ms838346.aspx |
24.03.2010, 18:48 | #2 |
C++ hater
СтарожилДжуниор
Регистрация: 19.07.2009
Сообщений: 3,333
|
ох боже...
1. нет точки с запятой после описания класса 2. конструктор защищенный. кто создаст объект этого класса. ладно еще, если это синглтон или базовай класс, чего по данному коду не видно 3. по передаче и вызове метода вообще бред какой то. опять же, пытаешься вызвать защищенный метод (заметь, ПЫТАЕШЬСЯ. через нетипизированный указатель данные передают очень в редких случаях в плюсах. в сях это нормально. я уже молчу о необходимости привидения типа). Код:
потоки создавать не надо тебе. пусть стороны темной это. страуструпа чтение к светлой стороне лишь ведет
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; 24.03.2010 в 18:53. |
24.03.2010, 19:08 | #3 |
Регистрация: 24.03.2010
Сообщений: 5
|
О, спасибо тебе, мудрый учитель. Понял ошибку свою я. Надо передавать ни void* а именно свой класс. Сейчас попробую.
На счёт первых двух пунктов- виноват. Просто тут минимум копипаста, в основном в ручную набивал. А потоки нужны мне. Хочу тёмную сторону познать чтобы бороться с ней. Да прибудет с вами сила! |
24.03.2010, 19:25 | #4 |
Регистрация: 24.03.2010
Сообщений: 5
|
во... скомпилировалось
только вот здесь WorkerThreadHandle = CreateThread ( NULL, 0, (LPTHREAD_START_ROUTINE)func1, // <<<<<<<<<<<<<<< this, 0, &WorkerThreadId ); пришлось принудительно тип изменить. Спасибо ещё раз! |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
вызов вложенной функции | veter_s_morya | PHP | 1 | 12.11.2009 11:33 |
Вызов функции класса по адресу | VintProg | Общие вопросы Delphi | 9 | 03.11.2009 05:17 |
Вызов функции по событию | phobos | Общие вопросы .NET | 8 | 26.05.2009 01:06 |
Вызов функции из dll-ки | VVVadim | Общие вопросы Delphi | 2 | 28.04.2009 10:37 |
Вызов функции | MarSeON | PHP | 2 | 01.08.2008 20:22 |