私は継承に関する質問があります。私の状況は次のとおりです:派生クラスC++のメソッドを使用するスーパークラス
私は時々交換したい2つのクラス(AThisWay、AThatWay)を持っています。彼らはどちらも同じメソッド名を持っていますが、メソッド内では異なることをします。それらのプロパティとメソッドは、他のクラス(B)によって使用されます。 私はATHisWayしか持っていませんでしたが、Bのスーパークラスでしたが、今はAThatWayも持っていて、AThisWayとAThatWayをサブクラスob Bにすることが可能かどうか疑問に思っています。 Bのスーパークラスを時々変更する方法があります。その点でベストプラクティスは何ですか?
ベスト 聖編集: は今、私は(ノートBはAThisWayからのみ派生)このようにそれをやっているが、私はBも時々AThatWayの方法を使用することができるようにしたいです。 AThiswayやAThatWayのように私が持っている物理モデルは違っていて、時々私のモデルをテストするために、時にはこのように、そして時にはその方法で私の計算をやりたいと思っています。私が今見ている最速の方法は、Bのコピーを作成してAThatWayからそれを派生させることですが、それはかなり複雑ではなく、デバッグが容易ではありません。
class AThisWay {
public:
int aNumber
void aMethod() { aNumber = 1; }
}
class AThatWay {
public:
int aNumber
void aMethod() { aNumber = 2; }
}
class B: public AThisWay{
public:
int anOtherNumber
void otherMethod()
{
aMethod();
anOtherNumber = aNumber + 2;
}
}
クラス
B
でバーチャルクラスとオーバーライドされた関数、および派生クラスへのベースクラスポインタ。 – Ron
"派生クラスへの基本クラスポインタ"は唯一のオプションか、それを構築する際にどのスーパークラスを使用するかをBに指示する方法はありますか?^ BをAから派生させることは賢明ですか?同様に、その場合のクラスBは、そのサブクラスなしでは何もできません。 –
*クラスB *で使用される*インターフェイスA *が必要で、それらの* AXxxXxx *クラスで実装されているように思えます。 (はい、C++は明示的なキーワードがなくてもインターフェイスの概念をうまくサポートします)。 – hyde