しばらくの間、stackoverflow と google を調べてきましたが、循環参照、不完全な型、ポリモーフィズムに関する特定の質問に対する答えが見つからないようです。
多くのコードを投稿せずにこの質問を説明できることを願っていますが、失敗した場合はお知らせください。簡単な例を書き留めます。
私は 2 つのクラスを持っていますが、どちらもお互いを使用しています (クラス COne と CTwo など)。また、クラス COne には基本クラス (BaseOne など) があります。
循環依存の問題を「解決」するために、ヘッダー ガード (そう呼ぶ場合) と不完全な型を使用します。
上部のヘッダー ファイルで:
#pragma once
そして、CTwo の C++ ファイルの上部のどこかに:
class COne;
ここで、不完全な型のためにコンパイラが COne が BaseOne から派生したものであることを認識していないように見えるという問題に遭遇します。そのため、戻り値の型が BaseOne* の関数では、COne* を返したいと考えています。これはダウンキャストである可能性がありますが、同じ型ではないと言われています。Cスタイルのキャストを使用してこれを修正しました
return (BaseOne*)m_c_one;
私が聞きたかったこと: C スタイルのキャストを使用してこれを解決するより良い方法はありますか?