ich diese Basisklasse habenC++ - Erstellen von nicht-abstrakte Objekte aus abstrakten Objekten
class Object {
...
public:
virtual void move() = 0;
virtual void move(string) = 0;
virtual void powerOn() = 0;
virtual void powerOff() = 0;
virtual void speak() = 0;
};
Dies wird die Basisklasse für verschiedene Klassen
class Electronics : public Object {
...
public:
virtual void powerOn();
virtual void powerOff();
};
void Electronics::powerOn() { ... }
void Electronics::powerOff() { ... }
class Phone : public Electronics {
...
public:
};
Nun, wenn ich erstellen möchten ein Objekt Phone, das die Methoden powerOn() und powerOff() verwendet. Ich brauche die anderen drei Methoden nicht.
Object *obj = new Phone;
Aber das würde mir wahrscheinlich einen Fehler ausgeben
undefined reference to move()
undefined reference to move(string)
undefined reference to speak()
Meine Frage ist, zu sagen, wie kann ich diesen Fehler zu vermeiden. Ich brauche diese Funktionen nicht für Phone, aber ich muss etwas mit ihnen machen. Wie kann ich diesen Fehler beheben?
Dank
Sie können diese Funktionen aus dem Objekt entfernen und sie in niedrigeren Unterklassen verwenden, wo Sie sie wirklich brauchen – Pooya
Ich muss später etwas tun wie: Objekt * Telefon = neues Telefon. Und später, wenn ich phone-> powerOn() anrufe, wird es sagen, dass es keine powerOn() -Methode in der Klasse gibt. –