Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > C/C++/С#


Ответ
 
Опции темы Опции просмотра
Старый 31.10.2018, 12:08   #1 (permalink)
Wersahi
Новичок
 
Регистрация: 30.04.2017
Сообщений: 3
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Вектор указателей на объекты класса

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

Старый 31.10.2018, 12:08
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Почитав аналогичные темы вы наберетесь больше информации

Массив указателей на объекты класса C++
Нужно сравнить два массива указателей типа char
Логический вектор. Паскаль
Pascal. Целочисленный вектор
Дан вектор

Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




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

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.