4
我正在使用boost :: any有多態類型,我需要能夠將一個對象轉換爲它的基類型。如何使用boost :: any_cast(C++庫)轉換爲基類型?
class A {
public:
int x;
virtual int foo()= 0;
};
class B : public A {
public:
int foo() {
return x + 1;
}
};
int main() {
B* bb = new B();
boost::any any = bb;
bb->x = 44;
A* aa = boost::any_cast<A*>(any);
}
主要功能的代碼引發以下運行時錯誤:
terminate called after throwing an instance of 'boost::exception_detail::clone_impl<boost::exception_detail::error_info_injector<boost::bad_any_cast> >'
what(): boost::bad_any_cast: failed conversion using boost::any_cast
Abort trap
如果我改變的static_cast在升壓::對的reinterpret_cast似乎工作any_cast代碼。但我不確定這會帶來什麼後果。
你有什麼想法嗎?
按值存儲任何對象並刪除它 – Sergei 2017-09-10 10:07:05