CORBA Any中 boolean,octet, char的解析

来源:互联网 发布:各国综合国力排名 知乎 编辑:程序博客网 时间:2024/06/06 00:57

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;

 

 

原创粉丝点击