我有一个名为的类Reciever,它有一个名为的函数recieve(const Event *),其中Event继承自BaseEvent.我想创建一个绑定到该类的特定实例.该实例被调用rec.为此,我使用:
void(Reciever::*func)(const Event *) = &Reciever::recieve;
auto recievePtr = std::bind(func, &rec, std::placeholders::_1);
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试将其存储在向量中时,我必须指定一个std::function将a BaseEvent作为输入而不是a Event,如下所示:
std::vector<std::function<void(const BaseEvent*)>>
Run Code Online (Sandbox Code Playgroud)
我该如何投射,recievePtr以便将其正确存储在矢量中?这甚至可能吗?使用指向a的函数指针的问题BaseEvent是,Reciever可以使用多个recieve()方法,这些方法都具有不同的派生类BaseEvent
您可以尝试以下操作。这在我的机器上编译并运行良好。Visual Studio 目标平台工具集 v120.
Reciever rec;
std::vector<std::function<void(const BaseEvent*)>> vector;
vector.push_back(
[&rec](const BaseEvent* event)
{
rec.recieve(static_cast<const Event*>(event));
});
vector.push_back(
[&rec](const BaseEvent* event)
{
rec.recieve(static_cast<const EventD*>(event));
});
const BaseEvent* e = new Event();
const BaseEvent* d = new EventD();
vector[0](e);
vector[1](d);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
136 次 |
| 最近记录: |