g_signal_connect (sink, "handoff", G_CALLBACK (video_handoff), NULL);
这句本来不是在类中使用的,在一个静态全局函数中使用不会出现问题,但现在我要加到类MediaPlayer的函数中就出现了错误,
则出现src/MediaPlayer.cpp:223: 错误: invalid use of member (did you forget the ‘&’ ?)
我把这句改为:
g_signal_connect (sink, "handoff", G_CALLBACK (&video_handoff), NULL);
src/MediaPlayer.cpp:223: 错误: ISO C++ 不允许通过提取一个未限定的或带括号的非静态成员函数的地址来形成一个成员函数指针。请使用‘&MediaPlayer::video_handoff’
再改为:
g_signal_connect (sink, "handoff", G_CALLBACK (&MediaPlayer::video_handoff), NULL);
则报错为:
src/MediaPlayer.cpp:223: 错误: 从‘void (MediaPlayer::*)(GstElement*, GstBuffer*, GstPad*, void*)’转换到‘void (*)()’
又改为:
g_signal_connect (sink, "handoff", G_CALLBACK ((void)&MediaPlayer::video_handoff), NULL);
则报错为:
src/MediaPlayer.cpp:223: 错误: void 值未如预期地被忽略
这到底是什么一回事啊?????
[ 此帖被duduqq在2009-09-01 21:00重新编辑 ]