最近、厄介な問題が発生しましたが、自分自身の回避策に満足していません。基本クラスへのポインターのベクトルを維持するプログラムがあり、そこにあらゆる種類の子オブジェクトポインターを格納しています。現在、各子クラスには独自のメソッドがあり、メインプログラムは、オブジェクトのタイプに応じてこれらのメソッドを呼び出す場合と呼び出さない場合があります(ただし、これらはすべて基本クラスの共通メソッドを頻繁に使用するため、継承が正当化されます)。
クラスタイプをチェックする(そしてメソッドを呼び出すかどうか)ための「オブジェクト識別子」があると便利だと思いました。これはまだあまり美しくありませんが、これは主な不便ではありません。主な不便な点は、基本クラスのポインターを使用して派生クラスのメソッドを実際に呼び出すことができるようにする場合(または、ポインターをポインター配列に格納する場合でも)、派生メソッドを基本で仮想として宣言する必要があることです。クラス。
C ++コーディングの観点からは理にかなっていますが、私の場合(開発の観点から)は実用的ではありません。さまざまなファイルでさまざまな子クラスを作成することを計画しているためです。仮想メソッドを追加するために、毎回基本クラスを微調整/維持したくない!
これを行う方法?基本的に、私が求めているのは(おそらく)Objective-C NSArraysのようなものを実装する方法です-メソッドを実装していないオブジェクトにメッセージを送信しても、何も起こりません。
よろしく