CORBA Any 允许你将任意的类型的属性或对象放入其中, 具体的知识请参照大卫的博客链接:http://blog.csdn.net/billdavid/archive/2006/05/12/726332.aspx
当前环境是HP-UNIX, TAO1.3.1.5
CORBA Any 的头文件是Any.h, 在TAO中主要有重载的“>>=”和“<<=”两个运算符。这两个运算符实现了将大多数类型的数据存入Any变量中, 但是有三种类型是特殊的, 它们是: boolean, octet 和 char.
比如bool类型,你不能将bool以"<<="的方式放入Any里,而必须使用from_boolean方法。同样在从Any中提取数据时,也不能使用>>=来获取,而必须使用to_boolean。在Any.h中,这部分的代码如下(以boolean为例,octet和char类似):
Boolean operator>> = (to_boolean b) const;
void operator<< = (from_boolean b);
struct from_boolean {
from_boolean(CORBA::Boolean b) : val(b) {};
CORBA::Boolean val;
};
struct from_boolean是作为boolean类型的helper类存在的。
在分布式的环境下,如果服务端将C++的bool类型放入到Any值里,比如
bool b = ture;
any<<=b;
那么真正放入到any里的类型码就不是bool或CORBA::Boolean,而是int。这时客户端必须:
int value = 0;
any<<=value;