Die Code-Snippet erzeugt unter einem Fehler:C++ abstrakte Klasse Parameterfehler Abhilfe
#include <iostream>
using namespace std;
class A
{
public:
virtual void print() = 0;
};
void test(A x) // ERROR: Abstract class cannot be a parameter type
{
cout << "Hello" << endl;
}
Gibt es eine Lösung/Abhilfe für diesen Fehler andere/besser als
virtual void print() = 0;
mit
ersetztvirtual void print() = { }
EDIT: Ich möchte in der Lage sein, jede Klasse zu übergeben, die die Basisklasse A als Parameter erweitert und implementiert, indem Sie Poly verwenden Morphismus (d.h. A* x = new B() ; test(x);
)
Prost
Abstarct-Klasse per Definition sollte nicht von selbst instanziiert werden. Diese Methoden müssen von den abgeleiteten Klassen überschrieben werden. Nur neugierig, was versuchst du damit zu erreichen? – Mahesh
Ich möchte etwas wie A x = new B() machen und jede Klasse extending/implementieren A übergeben. Ich hätte die Frage besser angeben sollen, denke ich. – Cemre
Bevor wir versuchen, eine Lösung/Abhilfe zu finden, müssen wir das Problem verstehen. Die Idee, eine abstrakte Klasse als "nach Wert" -Parameter zu übergeben, macht überhaupt keinen Sinn. Was versuchst du zu machen? – AnT