Есть некий объект Capture, один из методов которого передаётся как callback (использую libpcap, а коллбэк передаётся в pcap_dispatch()). У pcap_dispatch() первый аргумент — пользовательский указатель. Чтобы применить эту хрень к объекту, я объявляю класс с методом packetHandler() без этого первого аргумента; вместо него как раз передаётся this.
потом запускаю:
pcap_dispatch(iface,
65536,
(void (*)(uchar *, const pcap_pkthdr *, const uchar *))&Capture::packetHandler,
(uchar *)this);
вот заголовок pcap_dispatch():
typedef void (*pcap_handler)(u_char *user, const struct pcap_pkthdr *h, const u_char *bytes);
int pcap_dispatch(pcap_t *p, int cnt, pcap_handler callback, u_char *user);
g++ 4.4.3 воспринимает это нормально, но когда я решил скомпилить на 3.3.6, возникла ошибка. попробовал немного запариться, но без особых успехов.