Технический форум

Технический форум (http://www.tehnari.ru/)
-   C/C++/С# (http://www.tehnari.ru/f42/)
-   -   Вектор указателей на объекты класса (http://www.tehnari.ru/f42/t261570/)

Wersahi 31.10.2018 12:08

Вектор указателей на объекты класса
 
Добрый день! Есть базовый класс Place и производный от него Region. Мне необходимо создать вектор, который будет хранить эти объекты. Так же нужно реализовать функцию добавления объекта и просмотр вектора.

Код:

#include "stdafx.h"
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;

class Place
{
public:
        vector <Place*> MyList;
        string geographical_position;

        virtual void SetParametrs()
        {
                string GP;
                cout << "Введите географическое положение места: ";
                getline(cin, GP);
                geographical_position = GP;
        }
        void add(Place *p)
        {
                MyList.push_back(p);
        }
        virtual void show()
        {
                for (int i = 0; i < MyList.size(); i++)
                {
                        cout << geographical_position;
                }
        }
        Place()
        {
                geographical_position = "not";
                cout << "Вызван конструктор без параметров для класса Place! " << endl;
        }

        Place(string GP)
        {
                cout << "Вызван конструктор с параметрами для класса Place! " << endl;
                geographical_position = GP;
        }

};
class Region : public Place
{
protected:
        string climat;
public:

        virtual void SetParametrs()
        {
                string reg;
                cout << "климат ";
                getline(cin, reg);
                climat = reg;
                string gp;
                getline(cin, gp);
                geographical_position = gp;

        }
        virtual void show()
        {
               
                        for (int i = 0; i < MyList.size(); i++)
                        {
                                cout << Region::MyList[i] << endl;
                                cout << this->geographical_position << endl;
                              //здесь я не могу вывести собственные поля этого класса

                        }
        }
        Region() :Place()
        {
                cout << "Вызван конструктор без параметров для класса Region! " << endl;
        }

        Region(string CL, string GP) :Place(GP)
        {
                cout << "Вызван конструктор с параметрами для класса Region! " << endl;
                climat = CL;
        }
};

int main()
{

        setlocale(0, "Rus");
        Place n;
        Place * r = new Place();
        n.SetParametrs();
        n.add(r);
        n.show();
        \

        cout << endl;

        system("pause");
        return 0;
}

В чем ошибка? Я еще не уверена в правильности добавления объекта в вектор. Помогите разобраться


Часовой пояс GMT +4, время: 18:10.

Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.