我可以知道有什么方法可以从boost :: any中确定父类吗?确定父类从boost :: any
#include <iostream>
#include <boost/any.hpp>
class a {
public:
virtual ~a() {}
};
class b : public a {
};
bool is_class_a(const boost::any& any)
{
return boost::any_cast<a>(&any) != 0;
}
bool is_class_a_v2(const boost::any& any)
{
try
{
boost::any_cast<a>(any);
return true;
}
catch(const boost::bad_any_cast &)
{
return false;
}
}
int main()
{
std::cout<< is_class_a(b())<< std::endl; // return 0. but i wish to return 1.
std::cout<< is_class_a(a())<< std::endl; // return 1.
std::cout<< is_class_a_v2(b())<< std::endl; // return 0. but i wish to return 1.
std::cout<< is_class_a_v2(a())<< std::endl; // return 1.
}
的确,'boost :: any'意味着你必须知道存储值的确切类型,通常使用polymoprhism,所以你不需要知道确切的类型。在这种情况下,这意味着你的测试将尝试any_cast到所有派生类'a',但这有些适得其反。 – UncleBens 2009-11-20 08:01:55