im Grunde, was mein Problem ist: Ich habe eine Basisklasse und eine abgeleitete Klasse. Ich muss den Operator < < für die abgeleitete Klasse anrufen, aber es ruft weiterhin die Basisklasse, weil es im Wesentlichen als Auftrag erstellt wurde * Auftrag Auftrag ist der statische Typ, aber es wird geändert in order = new SpecialOrder;Ich versuche, einen Operator <<
so jetzt muss ich es der abgeleiteten Klasse
Dank im Voraus eine Menge nennen: D
//SpecialOrder.h
#include"Order.h"
class SpecialOrder : public Order// derived class
{
char* string;
public:
SpecialOrder();
SpecialOrder(const ISBN& isbn, const char* instr);
SpecialOrder(const SpecialOrder& source);
bool add(istream& is);
void display(ostream& os) const;
SpecialOrder& operator=(const SpecialOrder& source);
~SpecialOrder();
};
ostream& operator<<(ostream& os, SpecialOrder obj);
//Order.h
#include "ISBN.h"
class Order // base class
{
int ordered;
int delivered;
ISBN isbn;
public:
Order();
Order(const ISBN& isbn);
bool has(const ISBN& isbn) const;
int outstanding() const;
virtual bool add(istream& is);
bool add(int n);
bool receive(istream& is);
void display(ostream& os) const;
};
ostream& operator<<(ostream& os, Order obj);
Ich habe eine Anzeige-Methode in jeder Klasse, die ausdruckt, was ich brauche. es funktioniert nicht tho es sagt, dass es die Funktion nicht finden kann, die der Operator << (ostream & os, Order) genannt wird; –
1. 'display' sollte einen 'ostream &' zurückgeben. 2. Ich sehe, dass Sie einen 'Operator << (ostream & s, Order)' deklariert haben. Ich sehe nirgends, dass Sie es implementiert haben. 3. 'display' sollte virtuell sein. – DRVic