c++ - CORBA::String_var -> 我无法为这种类型的类字段分配任何值

标签 c++ string corba

我有一个简单的类:

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/

相关文章:

c++ - 在 Linux 上用 C++ 编译我的 Boost/NTL 程序

c++ - 如何在 C++ 中将 int 转换为二进制字符串表示形式

c++ - 在 C++ 中将字符串解析为数字数组?

C++枚举标志与位集

c++ - 为什么 fclose 不将文件指针设置为 NULL?

c++ - 找不到 StrSafe 函数 (StringCbPrintf_lW) 的区域设置感知版本

c++ - 为什么我不能在 C++ 中初始化一个将自身合并到其初始值中的对象?

java - NameContext 中的死锁。列表 ()

c++ - CORBA omniorb C++ 多仆人

c++ - 在同一应用程序/模块中使用 CORBA 接口(interface)的不同不兼容版本?