抽象インタフェースで,オブジェクトをリファレンス(IOR)で渡すか,または値(valuetype)で渡すかを実行時に決定するには,プリフィクス"abstract"を,インタフェース宣言前に使用します。
abstract interface foo {
void func():
};
抽象インタフェースをサポートするvaluetypeは,その抽象インタフェースとして渡せます。抽象インタフェースはコードサンプル20-52に示すように宣言されます。
valuetype vt supports foo {
...
};
抽象インタフェースとして渡す必要があるインタフェースはコードサンプル20-53に示すように宣言されます。
interface intf : foo {
};
コードサンプル20-53で宣言したfooという抽象インタフェースのC++マッピングの結果は,コードサンプル20-54のようなクラスになります。
class foo_var : public CORBA::_var{
...
};
class foo_out{
...
};
class foo : public virtual CORBA:::AbstractBase{
private:
...
void operator=(const foo&) {}
protected:
foo();
foo(const foo& ref) {}
virtual ~foo() {}
public:
static CORBA::Object* _factory():
foo_ptr _this();
static foo_ptr _nil() { ... }
static foo_ptr _narrow(CORBA::AbstractBase* _obj);
static foo_ptr _narrow(CORBA::Object_ptr _obj);
static foo_ptr _narrow(CORBA::ValueBase_ptr _obj);
virtual void func() = 0;
...
};
class _vis_foo_stub : public virtual foo, public virtual CORBA::Object {
public :
_vis_foo_stub() {}
virtual ~_vis_foo_stub() {}
...
virtual void func():
};
_varクラス,_outクラス,およびメソッドを実装するCORBA::AbstractBaseから派生したクラスがあります。