2012-02-22 9 views
2

私はこのコードをうかがいましたが、Aからの関数の1つが静的なBを参照しているので、コンパイル方法はかなり混乱しています。 BはB.cppにこのコードの多型を説明する必要があります

static A* instance(); 

Bhの

static B* instance() { return dynamic_cast<B*>(A::instance()); } 

でああファイルでA.

から

A* A::instance() 
{ 
    static B s_instance; 
    return &s_instance; 
} 

クラス定義を導出し、そのようなれる

でしたコードを軽くするため省略されています。

+0

私はこの問題を理解していません。 –

答えて

1
  • A::instance()はあなたBを指すA*を与えます。常に同じB
  • B::instance()A::instance()の結果を返します。dynamic_castB*です。

コンパイルエラーが発生する理由はありません(ただし、ABという定義はありません)。

+0

このタイプのことを行う別の方法はありますか? – DogDog

+0

@Apoc:これは、コードがこれらの関数をどのように使用しているかによってまったく異なります。どのような問題を解決しようとしていますか? –

+0

2つのタイプのシングルトンを持ちます。シングルトンの1つは他のタイプから派生しますが、両方のタイプに対して1つのインスタンスのみを持ちます。 – DogDog

関連する問題