CRef キャスト オペレータについて

 
 
 

CBase から派生する API クラスは、Softimage 基本オブジェクトをカプセル化するために CRef を使用します。指定された CRef にどのクラスを使用できるかを識別するために、C++ API では、CRef をベースとするランタイム型識別システム(RTTI)のフォームを使用します。CRef オペレータとエクストラクタ方式は、基本となる CRef オブジェクトにアクセスするために多くの API クラスで実装されています(詳細については、CBase のリファレンス ドキュメントを参照)。

API クラスを CRef クラスに変換

自動的に 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 );	
	}