旅游管理器.h
#include <iostream>
#include <string>
#include <vector>
#include <cstdio>
#include <typeinfo>
#include "Tour.h"
#include "GuidedTour.h"
using namespace std;
class TourManager {
private:
vector<Tour *> list;
void setupTour();
void callDisplayOnEach();
public:
TourManager();
void go();
};
旅游管理器.cpp
#include "TourManager.h"
TourManager::TourManager() {
setupTour();
}
void TourManager::setupTour() {
list.push_back(new Tour("BG002", "Botanical Gardens Entry Pass", 30.00));
list.push_back(new GuidedTour("SK003", "Learn to Ski Adventure Tour", 240.00, "28/07/2008", "Zail S", 25));
}
void TourManager::callDisplayOnEach() {
for(vector<Tour *>::iterator it = list.begin() ; it != list.end(); ++it) {
(*(*it)).display();
}
}
导游是 Tour 的一个子类。它覆盖了父旅游类的显示方法。但是,当我遍历游览对象矢量并调用显示时,即使对象是 GuidedTour,它也总是调用 tour::display。
我在这里做错了什么?
我正在使用 C++98 非常感谢。