Я не эксперт ACE. Но кажется, что реализация по умолчанию в классе ACE_Event_Handler действительно каждый раз возвращает ошибку. Извлечение из исходного кода ACE:
ACE_HANDLE
ACE_Event_Handler::get_handle (void) const
{
ACE_TRACE ("ACE_Event_Handler::get_handle");
return ACE_INVALID_HANDLE;
}
Производный класс должен реализовывать самостоятельно. Поэтому, если ваш класс является производным от класса ACE_Event_Handler, вы должны переопределить метод get_handle()
, чтобы получить значимый результат:
ACE_HANDLE DerivedClass::get_handle(void) const
{
return peer().get_handle();
}
Я бы порекомендовал вам
- Убедитесь, что вы предоставляете этот метод в своем производном классе.
- Если это так, дважды проверьте его реализацию. Наша проблема здесь. (Можете ли вы предоставить нам более подробную информацию о вашей реализации?)
- Если вы не предоставили переопределения, вы знаете, что должны его реализовать.