一般来说,我们会使用Variant类型来解决这个问题。这是C++面对对象机制和算子机制所派生出来的产物,能够让用户自行定义对象的行为。如果一个对象,可以表现的像这个又像那个,那不就解决问题了?因此在COM中就有一个variant。不过贝壳看过机制,是一堆东西的集合,非常的不美丽。今天贝壳又看到一个variant的实现,漂亮多了。
废话少说,上代码。
#include
using namespace std;
#include
using namespace boost;
int _tmain(int argc, _TCHAR* argv[])
{
any a;
a = 10;
printf ("%s: %d\n", a.type ().name (), any_cast
a = 10.5;
printf ("%s: %f\n", a.type ().name (), any_cast
a = string ("str");
printf ("%s: %s\n", a.type ().name (), any_cast
return 0;
}
当类型错误时,出现bad_cast exception。
没有评论:
发表评论