我有一个简单的类:
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,但我上面给出的代码没有显示任何内容……这里有什么问题?
最佳答案
如果您正在使用 omniORB,您可能必须至少调用 orb_init()
才能使字符串操作正常工作。否则,您拥有的代码似乎还不错。
(尽管您不必在 setField()
函数中调用 string_dup()
,因为 String_var
类会自动执行此操作当你给它分配一个 const char*
时。)
(并且您通过在 cout
中调用 e.getField()
来泄漏内存。但这不应该阻止您看到一些东西。)
关于c++ - CORBA::String_var -> 我无法为这种类型的类字段分配任何值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11850002/