CORBA Any中 boolean,octet, char的解析

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;

 

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值