send
и receive
являются потоками, и они должны быть статичными - это нормально. Но вы можете перенаправить поток в сам класс B:
class B
{
public:
static void* send(void* param)
{
// param is of B*
B* pThis = (B*)param;
pThis->send_impl();
return (void*)0;
}
void send_impl() { /* Use 'this'*/ }
};
Конечно, вам нужно передать действительную функцию B * в send
.
Или у вас есть структура, которая будет содержать A *, и некоторый флаг, который будет упоминать объект, является A или B. В этом случае вы можете выделить данную структуру в куче (предпочтительно) и передать эту структуру send
нить.
В функции send
, используя этот флаг, вы можете определить, имеет ли базовый указатель тип A или B, и вызвать нестатическую функцию соответствующего класса.