同一プログラム内に複数のオブジェクトが実装されている場合のプログラミング方法について説明します。
// IDL module test { interface intf1 { void op1(); void op3(); }; interface intf2 { void op2(); }; };
C++言語では、サーバアプリケーションの実装部は、以下のように各implクラスのメンバ関数としてマッピングされます。
上記IDL定義では、オブジェクトのメソッド呼び出す場合、以下の2とおりの方法があります。
同じオブジェクト内のメソッドop3を呼び出す場合、this->op3()のように記述します。
同じプログラム内の別オブジェクトのメソッドを呼び出す場合、new演算子を使ってimplクラスのインスタンスを作成し、そのインスタンスを呼び出します。なお、処理終了後は、delete演算子によりインスタンスを削除する必要があります。
test_intf1_impl::op1() { this->op3(); obj = new test_intf2_impl(); obj->op2(); delete obj; }