CBase から派生する API クラスは、Softimage の基本オブジェクトをカプセル化するために CRef を使用します。 指定された CRef にどのクラスを使用できるかを識別するために、C++ API では、CRef をベースとするランタイム型識別システム(RTTI)のフォームを使用します。 CRef オペレータとエクストラクタ方式は、基本となる CRef オブジェクトにアクセスするために多くの API クラスで実装されています(詳細については、「CBase」を参照してください)。
自動的に API クラスを CRef に変換またはキャスティングする主なメソッドは、次のとおりです。
CBase::operator CRef&();
このメソッドは、API クラスから CRef オブジェクトを抽出し、API クラスを CRef オブジェクトに指定した状況で明示的に変換する際に使用できます。 たとえば以下のようになります。
extern int foo( CRef& in_ref ); extern CValue GetMyValue(); Model root = app.GetActiveSceneRoot(); foo( root );
特定の環境で、自動変換がコンパイルしない場合(たとえば、Linux など)、次の方法のうち 1 つを使用する必要があります。
foo( (CRef)root );
foo( root.GetRef() );
CRef が CValue オブジェクトにカプセル化される場合、これを使用する必要があります。
CValue val = GetMyValue() if (val.m_t == CValue::siRef) { foo( val ); }