【发布时间】:2015-07-27 06:43:11
【问题描述】:
我将Poco::Any 与各种整数类型一起使用,例如:
Poco::Any x = 15;
Poco::Any y = (size_t)15;
Poco::Any z = 15L;
稍后我想使用整数值:
void func(Poco::Any &a)
{
如何从中提取任何整数?一种方法是:
long n;
if ( auto *p = Poco::AnyCast<int>(&a) )
n = *p;
else if ( auto *p = Poco::AnyCast<long>(&a) )
n = *p;
并为每个整数类型重复。但这很丑陋。有没有更好的办法?
我试过了:
Poco::Dynamic::Var var(a);
auto n = var.convert<int>(var);
但是这会引发来自VarHolder.h 的异常:
virtual void convert(Int32& val) const;
/// Throws BadCastException. Must be overriden in a type
/// specialization in order to suport the conversion.
【问题讨论】:
标签: c++ c++11 poco-libraries