例えば、私は抽象基底クラスA
とB
を持っています。クラスA12つの折り畳まれた多型は奇妙です、どのようにそれを拡張可能にするのですか?
class A1 : public A
{
public:
void f(B& b) override { b.f(A1); }
};
について
class A
{
public:
virutal void f(B& b) = 0;
};
に追随し、これB
のために、それは仮想メソッドf(A1)
class B
{
public:
virtual void f(A1& a) = 0;
};
そしてclass B1 : public B
中を必要とする、仮想メソッドがあるようA
は、仮想メソッドを持っています実装されました。問題は、別のclass A2 : public A
が追加されたときに、B
の仮想メソッドvirtual void f(A2& a) = 0
を追加する必要があります。B
をデザインすると、A2
でもA1
が追加されたかどうかわからないため、コードが壊れてしまうと思います。どのようにそれを避けるが、同等の要件を実装する?どのC++機能もテンプレートでも使用できます。
本当に達成したいことはありますか? –