C++ 如何获取占位符的内容::\u 1

C++ 如何获取占位符的内容::\u 1,c++,boost,bind,placeholder,C++,Boost,Bind,Placeholder,我目前拥有以下代码: using boost::bind; typedef boost::signal<void(EventDataItem&)> EventDataItemSignal; class EventDataItem { ... EventDataItemSignal OnTrigger; ... } typedef std::list< shared_ptr<EventDataItem> > DataItemList; typedef

我目前拥有以下代码:

using boost::bind;

typedef boost::signal<void(EventDataItem&)> EventDataItemSignal;
class EventDataItem
{
...
EventDataItemSignal OnTrigger;
...
}

typedef std::list< shared_ptr<EventDataItem> > DataItemList;
typedef std::list<boost::signals::connection>  ConnectionList;

class MyClass
{

void OnStart()
{
     DataItemList dilItems;
     ConnectionList clConns;

     DataItemList::iterator iterDataItems;
     for(iterDataItems = dilItems.begin();
         iterDataItems != dilItems.end();
         iterDataItems++)
     {
         // Create Connections from Triggers
         clConns.push_back((*iterDataItems)->OnTrigger.connect(
                               bind(&MyClass::OnEventTrigger, this)));
     }
}

void OnEventTrigger()
{
    // ... Do stuff on Trigger...
}
}

然而,我的呃逆是_1->OnTrigger如何从占位符1引用OnTrigger?

您可以用以下相同的方法解决此问题:将
\u 1->OnTrigger
替换为
绑定(&EventDataItem::OnTrigger,\u 1)

似乎是相关的:尝试此操作后,编译器返回一个错误:错误:调用'bind(,…)@sheepsimulator时没有匹配的函数,你能复制并粘贴整个编译器输出吗?@sheepsimulator,原始帖子中的代码正是你正在编译的吗?因为我想你可能想用
&MyClass::OnEventTrigger
替换
&MyClass::OnEventTrigger
@MSN-不,代码不是我要编译的,你是对的,::Stuff应该是::OnEventTrigger。在我的OP.@sheepsimulator中通过编辑修复,没有完整的编译器输出,很难确定失败的地方。
void MyClass::OnStart()
{
     DataItemList dilItems;
     ConnectionList clConns;

     // Resize connection list to match number of data items
     clConns.resize(dilItems.size());
     // Build connection list from Items
     // note: errors on the placeholder _1->OnTrigger
     std::transform(dilItems.begin(), dilItems.end(), 
                    clConns.begin(),
                    bind(&EventDataItemSignal::connect, _1->OnTrigger, 
                             bind(&MyClass::OnEventTrigger, this)));
}