• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Вектор указателей на объекты класса

  • Автор темы Автор темы Wersahi
  • Дата начала Дата начала

Wersahi

Ученик
Регистрация
30 Апр 2017
Сообщения
3
Реакции
0
Баллы
0
Вектор указателей на объекты класса

Добрый день! Есть базовый класс 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;
}

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