C++では複数のレベルのインターフェイスを使用できますが、基本インターフェイスへのポインタのみを返し、後でキャストできますか?複数レベルのインターフェイス - 基本インターフェイスへのポインタの返信
例:
class ILight
{
virtual vec3 Colour() = 0;
virtual void Colour(vec3 colour) = 0;
};
class ISpotlight : public ILight
{
virtual vec3 Position() = 0;
}
私はスポットでISpotlightを実装します。
ILight *CreateSpot()
{
return new Spot();
}
私は後で私がstatic_cast<Spot>
をすることができ、それを使用したい場合は、次の工場で、私は機能を持っています。その理由は、私はさまざまなタイプのライトを持つことができるからです。
あなたの関数が常に 'ISpotLight *'を返すなら、 'ISpotLight *'の代わりに 'ILight *'を設定するとどんな利点がありますか? – Holt
'ILight'には仮想デストラクタが必要です – Danh