我有一个简单的类的类字段中的任何值:CORBA :: String_var - >我不能分配给该类型
class MyExample : public POA_Example
{
CORBA::String_var field;
public:
char* getField();
void setField(const char* f);
};
char* MyExample::getField()
{
return CORBA::string_dup(this->field.out());
}
void MyExample::setField(const char* f)
{
this->field = CORBA::string_dup(f);
}
及主要应用:
#include "MyExample.h"
#include <iostream>
using std::cout;
int main()
{
MyExample e;
e.setField("Hello");
cout << e.getField() << "\n";
return 0;
}
我使用omniORB和我上面给出的代码没有显示任何内容......这里有什么问题?
的感谢!但是,你为什么通过在我的'cout'中调用'e.getField()'来泄漏内存?我不明白,它有什么问题?有没有其他的方法来获得这个值? – yak 2012-08-08 15:26:01
那么通常你会不会做出'getfield命令)的本地呼叫('。我假设这是一个CORBA接口。当用作CORBA调用时,骨架将释放您在'string_dup()'中动态分配的内存。但是由于你在本地调用它,你应该在String_var中捕获调用的结果,这样内存就会被清除。 – 2012-08-08 16:25:34
所以如何写一个字符串消气剂可以使用'getField'方法CORBA调用? – yak 2012-08-08 16:30:34