假设我有一个 IDL 函数:
void foo(out Data d);
当我从生成的代码继承时,签名将如下所示:
void foo(IDL::Data_out d);
我的第一个问题是,我必须在客户端传递什么?我试过:
IDL::Data_out d;
_servantRef->foo(d);
但这不起作用,因为 Data_out 没有默认构造函数。然后我尝试了:
IDL::Data* d;
_servantRef->foo(d);
但现在编译器无法从 IDL::Data* 转换为 IDL::Data_out。以下工作,但看起来过于复杂,因此不正确:
IDL::Data* d(NULL);
IDL::Data_out do(d);
_servantRef->foo(do);
我该如何从那里开始?在执行 foo() 期间,servant 将在某些时候分配一个数据对象,如下所示:
void Servant::foo(IDL::Data_out d)
{
d = new Data();
}
在客户端使用它之后,我将删除该对象,如下所示:
IDL::Data* d(NULL);
IDL::Data_out do(d);
_servantRef->foo(do);
delete d;
这至少从它的想法上是正确的还是有不同的工作方式?将不胜感激一些帮助或指向以易于理解的方式描述的文档。