c++中的std::future是否支持多态?
假如我要将child_class
存储在future<parent_class>
中,那么我可以通过dynamic_cast<child_class>
来获取它吗?
c++中的std::future是否支持多态?
假如我要将child_class
存储在future<parent_class>
中,那么我可以通过dynamic_cast<child_class>
来获取它吗?
#include <iostream>
#include <future>
using namespace std;
struct Parent {
virtual void a() { cout << "I am parent"; }
};
struct Child : Parent {
virtual void a() { cout << "I am child"; }
};
Child g_c; //just some global for the purposes of the example
int main() {
std::future<Parent&> p = async(launch::async, []() -> Parent& { return g_c; });
auto c = dynamic_cast<Child&>(p.get());
c.a();
return 0;
}
以下是代码的结果:http://ideone.com/4Qmjvc
shared_ptr
/指针,但实际上从未将有效对象放入其中。如果你真的这样做了,它就可以正常工作:http://ideone.com/mtbrCE - Olipro
std::function<T>
,其中 T 是一个基类,然后你将一个派生类D
放入其中,你能否检索它并使用dynamic_cast
转换回D
? - Olipro