C++では、同じことを計算するさまざまな方法を表すいくつかのアルゴリズムを実装する必要があります。OOを使用して一般的にパラメータを表す方法は?
さまざまなアルゴリズムを表すためにインターフェイスを使用することを考えました。
class AlgorithmInterface
{
public:
virtual double ComputeSomething(void* parameter) = 0;
}
class AlgorithmImplementation1: public AlgorithmInterface
{
public:
virtual double ComputeSomething(void* parameter) { /* implementation */}
}
class AlgorithmImplementation2: public AlgorithmInterface
{
public:
virtual double ComputeSomething(void* parameter) { /* implementation */}
}
これらのそれぞれのパラメータ(前の例でのvoid *)が異なっているが、どのように私は一般的にそれらを表すことができますか?
この例では、これを表現する方法がわからないため、私はvoid *を使用しました。どのようにすればいいのか教えてください:パラメータの継承を継承してキャストする必要がありますか?
問題は、インタフェースが全く異なる場合、同じ階層に属しているかどうかです。すなわち、呼び出しコードは異なる実装*を使用することはできませんが、一般には*どの実装を呼び出すかを知る必要があります。アルゴリズムに渡すことができます。異なるインタフェースを持つ場合、なぜそれらはすべて 'AlgorithmInterface'ですか? –
デビッド、私はたいていその場でswitch文を避けたいと思っていました。 – BlueTrin
あなたはコメントの返信で人に正しく@アドレスを付ける必要があります。そうしないと、返信は返信タブに表示されません。 – sbi