如何调用shared_ptr< boost :: signal>从一个循环中的向量?

我有一个使用boost :: signal的工作回调系统。我将它扩展为一个更灵活,更高效的回调管理器,它使用shared_ptr的向量来处理我的信号。我已经能够成功地创建并添加回调列表,但我不知道如何实际执行信号。
...

// Signal aliases
typedef boost::signal<void (float *, int32_t)> Callback;
typedef std::shared_ptr<Callback> CallbackRef;

// The callback list
std::vector<CallbackRef> mCallbacks;

// Adds a callback to the list
template<typename T>
void addCallback(void (T::* callbackFunction)(float * data, int32_t size), T * callbackObject) 
{
    CallbackRef mCallback = CallbackRef(new Callback());
    mCallback->connect(boost::function<void (float *, int32_t)>(boost::bind(callbackFunction, callbackObject, _1, _2)));
    mCallbacks.push_back(mCallback);
}

// Pass the float array and its size to the callbacks
void execute(float * data, int32_t size)
{

    // Iterate through the callback list
    for (vector<CallbackRef>::iterator i = mCallbacks.begin(); i != mCallbacks.end(); ++i)
    {

        // What do I do here?
        // (* i)(data, size); // <-- Dereferencing doesn't work

    }   

}

...
所有这些代码都有效。我只是不确定如何从带有向量的shared_ptr中运行调用。任何帮助都会很整洁。提前致谢。     
已邀请:
那是因为解除引用导致shared_ptr,而不是回调对象:
        // (* i)(data, size); // <-- Dereferencing doesn't work
尝试解除引用两次:
        (**i)(data, size);
您可以选择致电:
        (*i)->operator()(data, size);
    

要回复问题请先登录注册