1

前回の投稿から得た指示に従い、コードを書き直しました。

私のヘッダーファイル

#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 を使用する必要があります

どうもありがとう

4

1 に答える 1