変数受渡規則_en

構造体

CORBA の構造体は C++ において、構造体 "struct" にマッピングされる。

 // -*- IDL -*-
 struct Profile {
   short short_value;
   long  long_value;
 };

 // -*- C++ -*-
 struct Profile {
   CORBA::Short short_value;
   CORBA::Long  long_value;
 };

 class Profile_var {
   
 };

  • 固定長の構造体
  • 可変長の構造体

構造体に可変長のメンバー (string, wstring, sequence, (可変長メンバを持つ struct, 可変長メンバを持つ union) が含まれていると,構造体は可変長データとみなされます。 この場合、固定長の構造体とは異なる C++ コードが生成され、戻り値やoutパラメータにおける扱いが異なります。

    • _var型 IDL コンパイラは IDL における構造体から、C++ の構造体と _var 型のクラスを自動的に生成します。 _var 型クラスはスマートポインタのように振る舞い、

可変長の構造体として _var クラスを使用する場合,可変長のメンバーに割り当てられるメモリは自動的に管理されます。

    • _var 型の変数(例えばvar1)から他の_var型の変数(var2)に代入が行われた場合には、そのポインタの所有権が var2 に移り、その後 var1 は初期化もしくは代入が行われるまで、使用することはできません。
    • 構造体がスコープの外に出ると,可変長のメンバーに関連付けられていたすべてのメモリは自動的に解放されます。 ただし、すでに所有権を他に譲渡している_var型変数がスコープから出る場合、元のデータに対しては開放は行われません。(所有権を既に譲渡しているので。)
    • 初期化もしくは代入された構造体に対して,再び初期化または代入が行われた場合,元のデータに関連付けられていたメモリは自動的に解放されます。
    • 可変長のメンバーにオブジェクトリファレンスが代入される場合は,必ずそのオブジェクトリファレンスのコピーが作成されます。可変長のメンバーにポインタが代入される場合,コピーは作成されません。

latest Releases

For Begginers

Windows msi(installer) package (only trying samples)

Development environment is required for RT-Component development. See download page for details.

Number of Projects

Join our slack

Enter email address for slack invite.

OpenHRP3

Dynamics simulator

OpenHRI

Human-Robot-Interaction RTCs

OpenRTP

Integrated Development Platform

OpenINVENT

Mobile Robot RTCs