C++ 抽象クラスを作成しようとしていますが、このクラスの実装者に静的関数を含めるように要求する方法がわかりません。
例えば:
class AbstractCoolThingDoer
{
void dosomethingcool() = 0; // now if you implement this class
// you better do this
}
class CoolThingDoerUsingAlgorithmA: public AbstractCoolthingDoer
{
void dosomethingcool()
{
//do something cool using Algorithm A
}
}
class CoolThingDoerUsingAlgorithmB: public AbstractCoolthingDoer
{
void dosomethingcool()
{
//do the same thing using Algorithm B
}
}
ここで、クールなことを行う方法の詳細を抜きにして、クールなことをしたいと思います。だから私は次のようなことをしたい
AbstractCoolThingDoer:dosomethingcool();
クールなことを行う方法を知る必要はありませんが、これには仮想と静的の両方の機能が必要であるように思われますが、これはもちろん矛盾しています。
理論的根拠は、CoolThingDoerUsingAlgorithmB が後で作成される可能性があり、できればクールなことを行う必要があるソフトウェアを書き直す必要がないことです。
編集:私が達成しようとしていることを明確にしているかどうかはわかりません. 私が満たそうとする3つの基準があります
abstractcoolthingdoer を使用し、ライブラリが聞いたことのない別の coolthingdoer が作成された場合でも、これまで書き直す必要がないライブラリ。
必要な構造に準拠しない coolthingdoer を作成しようとすると、ライブラリを使用する実行可能ファイルはコンパイルされません。
coolthingdoer には、必要な静的関数がいくつかあります。
おそらく悪いデザインを探しているので、より良いデザインを教えてください。工場は必要ですか?