【发布时间】:2013-12-12 10:52:51
【问题描述】:
我有一个idl定义如下
typedef sequence<octet> ByteArray;
interface Connection {
ByteArray get_id ();
}
还有这个客户端代码
ByteArray * idToEncrypt = connection->get_id();
encryptId(idToEncrypt);
... // rest of code
函数 encryptId() 具有签名ByteArray* encryptId(ByteArray* idToEncrypt)。我无法更改此签名。
对于自动内存处理,idToEncrypt 的类型已更改为 ByteArray_var。问题是我不知道如何从 ByteArray_var 获取 'ByteArray *' 并将其传递给 encryptId()。
有没有办法自动处理分配的内存“idToEncrypt”并仍将其作为“ByteArray *”传递给 encryptId()?
【问题讨论】:
-
encryptId(&idToEncrypt.inout())呢? -
同时检查新的 IDL 到 C++11 语言的 CORBA 映射,其中 sequence
映射到 std::vector ,它使用 C++11 移动语义按值返回.