class Server
{
private:
HANDLE hThreadInput;
DWORD dwCountInput,dwThreadIdInput;
public:
void GetInput();
void Create();
};
Void Server::Create()
{
hThreadInput = CreateThread(NULL,0,[COLOR="Blue"]GetInput[/COLOR],&dwCountInput,0,&dwThreadIdInput);
}
void Void Server::GetInput()
{
}
Ошибка при получении адреса функции Server из класса.
Код:
метод должен быть статическим, информацию об экземпляре можно передать через соотв. параметр в CreateThread.
А поточнее пожалуйста объесни, ато чо то неуловил суть. Заранее спасибо.
Сделай поиск по форуму ключевой фразой "статический метод", всё станет яснее. Чтоб уменьшить кол-во результатов поиска, можешь задать в расширенном поиске пользователя Green.
Кому должен? ;)
Нужно объявить указатель не на функцию, а на метод данного класса.
Код:
class Server; // Предварительное объявление класса
typedef void __fastcall (*Server::fPointer)(void); // Объявление типа указателя
class Server
{
// Реализация класса
};
///.....
{
fPointer ptr = &Server::GetInput;
// Используем ptr;
}
typedef void __fastcall (*Server::fPointer)(void); // Объявление типа указателя
class Server
{
// Реализация класса
};
///.....
{
fPointer ptr = &Server::GetInput;
// Используем ptr;
}
Кстати, поместить в данный указатель адрес виртуального метода, то этот указатель также будет виртуализовываться.
Если ты обратишь внимание на контекст, в котором автор задает вопрос, а именно создание треда (CreateThread), то использование указателя на метод класса тут не подходит. Метод должен быть статическим.
Нашол пару статей правда не по этому форуму, там так намудрено ничего непинятно. Вот так эти __thiscall =(.
http://forum.codenet.ru/showthread.php?t=16931&highlight=%F1%F2%E0%F2%E8%F7%E5%F1%EA%E8%E9+%EC%E5%F2%EE%E4
http://forum.codenet.ru/showthread.php?t=18475&highlight=%F1%F2%E0%F2%E8%F7%E5%F1%EA%E8%E9+%EC%E5%F2%EE%E4
http://forum.codenet.ru/showthread.php?t=11399&highlight=%F1%F2%E0%F2%E8%F7%E5%F1%EA%E8%E9+%EC%E5%F2%EE%E4
Может быть и лентяй :) но я правда искал и на форуме и по инету и в google нашол пару статей но там сложновато учесть то что я занимаюсь C++ с пол года, спасибо за ссылки.