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)的函數; – 2012-04-14 00:36:31
1.'display'應該返回'ostream&'。 2.我看到你已經聲明瞭一個'operator <<(ostream&s,Order)'。我沒有看到你已經實現它的任何地方。 3.'display'應該是虛擬的。 – DRVic 2012-04-14 01:16:19