Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

_beginthreadex и члены класса

1.1K
18 апреля 2004 года
teran
73 / / 15.04.2003
Подскажите как решить такую проблему - есть базовый класс (TCP сервер), при подключении клиента он при помощи _beginthreadex создает новый поток, в котором запускает метод ClientExecute(). Если ClientExecute объявлять так -
Цитата:
unsigned int __stdcall ClientExecute(LPVOID client_socket);


, то выскакивает ошибка (оно и понятно, неявно указатель передается).
Если объявлять его статическим, то все нормально, но мне надо, чтобы он был еще и виртуальным (класс-то хочу сделать базовый). Как быть?

3
19 апреля 2004 года
Green
4.8K / / 20.01.2000
Цитата:
Originally posted by teran
Подскажите как решить такую проблему - есть базовый класс (TCP сервер), при подключении клиента он при помощи _beginthreadex создает новый поток, в котором запускает метод ClientExecute(). Если ClientExecute объявлять так -

, то выскакивает ошибка (оно и понятно, неявно указатель передается).
Если объявлять его статическим, то все нормально, но мне надо, чтобы он был еще и виртуальным (класс-то хочу сделать базовый). Как быть?



Сделай статический метод, в который передавай указатель на объект (this) и в котором вызыывается виртуальный метод:

Код:
class Base
{
public:
    virtual unsigned int ClientExecute(LPVOID client_socket);

    static unsigned int CallClientExecute(Base* pBase, LPVOID client_socket)
    {
        return pBase->ClientExecute(client_socket);
    }
};


class Child :public Base
{
public:
    unsigned int ClientExecute(LPVOID client_socket);
};
1.1K
19 апреля 2004 года
teran
73 / / 15.04.2003
Спасибо, будем реализовывать :-).
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог