gpt4 book ai didi

c++ - 如何获取占位符的内容::_1

转载 作者:行者123 更新时间:2023-11-30 03:11:03 32 4
gpt4 key购买 nike

我目前有以下代码:

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...
}
}

我想更改 MyClass::OnStart 以使用 std::transform 来实现相同的目的:

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)));
}

但是,我的小问题是 _1->OnTrigger。 如何从占位符 _1 引用 OnTrigger?

最佳答案

可以按照Accessing member variables through boost lambda placeholder的方法解决: 将 _1->OnTrigger 替换为 bind(&EventDataItem::OnTrigger, _1)

关于c++ - 如何获取占位符的内容::_1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2648353/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com