Вектор указателей на объекты класса
Добрый день! Есть базовый класс 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;
}
В чем ошибка? Я еще не уверена в правильности добавления объекта в вектор. Помогите разобраться
|