Zum Beispiel habe ich eine abstrakte Basisklasse A
und B
. A
hat eine virtuelle Methode als A1Zwei gefaltete Polymorphie ist seltsam, wie man es erweiterbar macht?
class A
{
public:
virutal void f(B& b) = 0;
};
Für Klasse
class A1 : public A
{
public:
void f(B& b) override { b.f(A1); }
};
und damit für B
folgt, braucht es eine virtuelle Methode f(A1)
class B
{
public:
virtual void f(A1& a) = 0;
};
Und in class B1 : public B
, die virtuelle Methode ist implementiert. Das Problem ist, dass, wenn ein anderes hinzugefügt wird, ich eine virtuelle Methode hinzufügen muss in Klasse B
, die ich denke, dass es den Code bricht, weil ich nicht weiß, ob A2
sogar A1
hinzugefügt wird oder nicht, wenn ich Klasse B
entwerfen. Wie kann man es vermeiden, aber die entsprechenden Anforderungen umsetzen? Jede C++ - Funktion kann sogar mit Vorlagen verwendet werden.
Was möchten Sie wirklich erreichen? –