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