Я следовал инструкциям, которые я получил из моего последнего поста, и переписал свой код.
Мой заголовочный файл
#include <iostream>
#include <string>
#include <vector>
#include <cstdio>
#include <typeinfo>
#include "Tour.h"
#include "GuidedTour.h"
using namespace std;
class TourManager {
private:
vector<Tour *> tours;
void setupTour();
string getUserInput();
string displayMainMenu();
void displayTourDetails();
void callDisplayOnEach();
void addBookingsToTour();
public:
TourManager();
void go();
};
Затем у меня есть функция для заполнения вектора «список» объектами Tour и GuideTour.
void TourManager::setupTour() {
tours.push_back(new Tour("FP001", "Fun Park 3 Day Pass", 110.00));
tours.push_back(new GuidedTour("SK003", "Learn to Ski Adventure Tour", 240.00, "28/07
}
void TourManager::callDisplayOnEach() {
for (vector<Tour *>::iterator it = tours.begin() ; it != tours.end(); ++it)
{
if(typeid(*it) == typeid(GuidedTour))
{
cout << "Guided Tour" << "\n";
}
else
{
cout << "NOT Guided Tour : " << typeid(*it).name() << "\n";
}
}
}
Однако мне всегда кажется, что возвращаются объекты Tour. Например: он всегда печатает NOT Guided Tour.
как архивировать полиморфное поведение?
Не могли бы вы посоветовать? (Я новичок в C++) Мне необходимо использовать C++98
Большое спасибо
GuidedTour
. - person MSalters   schedule 30.08.2013