传递可能更改为类实例的可调用对象

时间:2018-08-02 22:47:59

标签: c++ stdbind

我有一组要与特定类 Node 的实例关联的可调用对象。 Node 的每个实例仅需要持有一个可调用对象,并且可以从成员函数中调用它。假设A,B和C是可调用的,它们可能具有不同的函数签名:

Node n1,n2,n3;
n1.associate(A);
n2.associate(B, 42);
n3.associate(C, "foo");

//...

n1.mem_fn(); //will call A at some point inside some_other_fn()
n2.mem_fn(); //will call B, passing 42 as argument

//...

n1.associate(C, "bar");
n1.mem_fn(); //now C will replace A, and be called from n1::mem_fn() with arg "bar"

我该如何完成?可调用对象的返回类型可能不同。

1 个答案:

答案 0 :(得分:0)

无需再使用Locations.ForEach(a => a.Name = a.Name.Replace(@"/", @" ").Replace(@"\", @" "); 。 Lambda非常易于使用,可以快速生成可调用对象,该对象还可以根据需要存储任何类型的数据。

std::bind