如何用std :: function绑定成员函数?

时间:2016-03-23 09:23:42

标签: c++11

我想绑定成员函数,但似乎失败了。

Q4kDeviceSource.hh
class Q4kDeviceSource {
public:
  void videoStreamCallback(QIPCamStreamCbType streamCbType, uint32_t streamId, uint8_t *buffer, size_t bufferSize);
。。。
}

typedef std::function<void(QIPCamStreamCbType cbType, uint32_t streamId,
                        uint8_t* buffer, size_t bufferSize)>
                        StreamCallback;

Q4kDeviceSource.cpp
。。。
StreamCallback videoElementryCb = std::bind(&Q4kDeviceSource::videoStreamCallback, this,
        std::placeholders::_1, std::placeholders::_2, std::placeholders::_3, std::placeholders::_4);

videoElementryCb(QIPCamStreamCbType::QIPCAM_STREAMCBTYPE_NORMAL,id,NULL,0);
。。。

构建失败!

./prebuilts / ndk / 9 / sources / cxx-stl / gnu-libstdc ++ / 4.8 / include / functional:2463:error:undefined reference to&#39; std :: __ throw_bad_function_call()&#39; collect2:错误:ld返回1退出状态

1 个答案:

答案 0 :(得分:1)

您似乎与gcc而不是g++相关联。

不同之处在于,g++也会链接到libstdc++,而gcc则不会。{/ p>

链接g++或将-lstdc++添加到链接器命令行。