前回の投稿から得た指示に従い、コードを書き直しました。
私のヘッダーファイル
#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();
};
次に、「リスト」ベクトルにツアー オブジェクトとguidedTour オブジェクトを設定する関数があります。
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 を使用する必要があります
どうもありがとう