【发布时间】:2013-10-23 00:06:57
【问题描述】:
旅游和导游。导览游扩展了旅游课程。我正在重载旅游课程中的 > 运算符。
我的旅行班看起来像
#include <iostream>
#include <vector>
#include "Customer.h"
using namespace std;
class Tour {
protected:
string id;
string description;
double fee;
vector<string> customerList;
public:
Tour();
Tour(string idVal, string descriptionVal, double feeVal);
string getId();
string getDescription();
double getFee();
double getTotalForTour();
virtual void addCustomer(string cust);
vector<string> getCustomers();
virtual void display();
friend ostream& operator<< (ostream &out, Tour &cust);
friend istream& operator>> (istream &in, Tour &cust);
};
那么我的导览是这样的,
#include <iostream>
#include "Tour.h"
#include "SimpleDate.h"
using namespace std;
class GuidedTour : public Tour {
private:
SimpleDate* date;
string guideName;
int maxNumTourists;
public:
GuidedTour();
GuidedTour(string idVal, string descriptionVal, double feeVal, SimpleDate* dateVal, string guideNameVal, int maxNumTouristsVal);
virtual void addCustomer(string cust);
SimpleDate* getDate();
void display();
friend ostream& operator<< (ostream &out, GuidedTour &cust);
friend istream& operator>> (istream &in, GuidedTour &cust);
};
我想在子类上以不同的方式重载这些运算符来做其他事情。
我有一个包含游览和导游的向量。
当我遍历向量并执行以下操作时,
for (unsigned int i = 0; i < tourListVector.size(); i++) {
cout << *tourListVector[i];
}
即使对象是导览,它也始终执行游览中指定的操作。
你能帮忙吗?
【问题讨论】:
-
this 可能会有所帮助
-
从您的友元基类运算符调用的虚拟
read(std::stream&)和write(std::ostream&)将消除在派生类中重写运算符的需要。派生覆盖read和write(如果需要,甚至可以直接调用基类作为其派生功能的一部分)。 -
你能解释一下吗?抱歉,我对 C++ 很陌生
-
@Archie Any good C++ book 将解释这一点以及更多内容。
-
@Archie follow the link in Ivaylo's comment above。 Loki 在该问题中的回答与您将在 SO 答案的有限空间中看到的一样好。