1
基本的に私の問題は何ですか: 私は基本クラスと派生クラスを持っています。 派生クラスで< <という演算子を呼び出す必要がありますが、メインクラスがOrder * orderとして作成されているため、基本クラスを呼び出し続けます。 Orderは静的型ですが、 order = new SpecialOrder;私は演算子をオーバーロードしようとしています<<
ので、今、私はそれはたくさん事前に
感謝派生クラスを呼び出す必要があります: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);
私は必要なものを印刷する各クラスに表示メソッドを持っています。 オペレータ<<(ostream&os、Order)と呼ばれる関数を見つけることができないという意味では機能しません。 –
1. 'display'は' ostream& 'を返します。 2.演算子<<(ostream&s、Order) 'を宣言しています。あなたがそれを実装しているところはどこにも見当たりません。 3. 'display'は仮想でなければなりません。 – DRVic