CとかCと長い間使ってきましたが、C++に慣れていません。状況は我々が持っているということです。条件に基づいたC++関数のオーバーライド
現在、すべての最後のサブクラスのクラス1からメンバ関数を継承しますが、我々は唯一のサブクラスのいずれかでこの機能の動作を変更する必要があり、場合にのみbase class template 1 -> base class template 2 -> several relevant subclasses
コード内の他の場所の変数が設定され、それ以外の場合はクラス1で定義されている関数を実行します。if-else
のもう一方の側で関数定義全体をスロットしないでこれを行う方法はありますか?私はSFINAE/enable-ifを見てきましたが、これはタイプベースの決定に使用されています。このような単純な条件ではありません。
私は何かが簡単でないか愚かな場合は教えてください。
template <class Face> class Publisher {
virtual void publish(...) {
// do stuff
}
}
template <class NewsType> class NewsPublisher : public Publisher<OnlineFace> {
// constructors, destructors...
}
class MagazinePublisher : public NewsPublisher<Sports> {
void publish(...) {
if(that.theOther() == value) {
// do different stuff
} else {
// do whatever would have been done without this override here
}
}
}
でしたあなたは、少なくとも私たちに最小の擬似コードサンプルを与えてください。あなたの散文から実際の状況を得ることは非常に難しいです。 –
'if(condition)return base_class :: foo(args);を試したことがありますか? else/*何か他に*/'? –
@ W.F。私がOPの状態を正しく理解していれば、それを行うために 'if-else'ロジックを使いたくないという疑問があります。 –