Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Как занести список в контейнер? / 4 сообщений из 4, страница 1 из 1
17.05.2014, 18:28
    #38644228
nick95nick
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как занести список в контейнер?
Имеется класс, в котором представлены различные данные о фирмах (адреса, телефоны, район итд). Также существует поле для списка услуг, которых всегда обязательно несколько. Сейчас в головной программе я просто прописываю их через \n, но мне необходимо создать контейнер для поля "Услуги". Но я не совсем понял как это должно выглядеть. Как контейнер выглядит в перечислении полей класса и как с ним работать в данном случае?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
#if !defined _ADV_
#define _ADV_

#include <iostream>
#include "conio.h"
#include <string>
#include <iomanip>

using namespace std;

enum HEADING{ NONE, ShoesRepair, WorkshopCars, CreativeWorkshops };
string HeadName[] = { "ShoesRepair", "WorkshopCars", "CreativeWorkshops"};

class Advertisment{
	HEADING Rubric;
	string Area, Address, Services;
	string Phone;
public:
	Advertisment(HEADING Rubric, char* Area, char* Address,  char* Services, char* Phone);
	Advertisment(const Advertisment&);
	~Advertisment(void);
	Advertisment& operator=(Advertisment &ad);
	bool operator==(Advertisment &ad);
	bool operator!=(Advertisment &ad);
	friend ostream& operator<<(ostream&, Advertisment&);
	string* StringMember(char* Name);
	HEADING* Advertisment::HeadingMember(char* Name);
	void Correct(HEADING Rubric, char* Area, char* Address, char* Services, char* Phone);
};

Advertisment::Advertisment(HEADING head = NONE, char* text = "", char* adr = "", char* serv = "", char* phone = ""):
	Rubric(head), Area(text), Address(adr), Services(serv), Phone(phone)
	{}

Advertisment::Advertisment(const Advertisment &ad){
	Rubric = ad.Rubric;
	Area = ad.Area;
	Address = ad.Address;
	Services = ad.Services;
	Phone = ad.Phone;
}

Advertisment::~Advertisment(void){}

Advertisment& Advertisment::operator=(Advertisment &ad){
	Rubric = ad.Rubric;
	Area = ad.Area;
	Address = ad.Address;
	Services = ad.Services;
	Phone = ad.Phone;
	return *this;
}

bool Advertisment::operator == (Advertisment &ad){
	if (Rubric == ad.Rubric && Area == ad.Area && Address == ad.Address && Services == ad.Services && Phone == ad.Phone)
		return true;
	else return false;
}

bool Advertisment::operator != (Advertisment &ad){
	if (*this == ad) return false;
	else return true;
}

ostream& operator<<(ostream &c, Advertisment &ad){
	c << "------Advertising Workshops------\n\n" 
		<< " Rubric:      ";
	switch (ad.Rubric){
	case ShoesRepair: c << setw(18) << HeadName[0]; break;
	case WorkshopCars : c << setw(18) << HeadName[1]; break;
	case CreativeWorkshops:   c << setw(19) << HeadName[2]; break;
	}
	c << "\n" << " Area: " << setw(26) << ad.Area << "\n";
	c << " Adress: " << setw(24) << ad.Address << "\n";
	c << " Services: " << setw(23) << ad.Services << "\n";
	c << " Phone: "  << setw(25) << ad.Phone << "\n";
	c << "---------------------------------\n";
	return c;
}



void Advertisment::Correct(HEADING head, char* text, char* adr, char* serv, char* phone)
{
	if (head)
		Rubric = head;
	if (strcmp(text, " -"))
		Area = string(text);
	if (strcmp(adr, "-"))
		Address = string(adr);
	if (strcmp(serv, "-"))
		Services = string(serv);
	if (strcmp(phone, "-"))
		Phone = string(phone);

}

string* Advertisment::StringMember(char* Name){
	if (!strcmp(Name, "Area"))
		return &Area;
	if (!strcmp(Name, "Address"))
		return &Address;
	if (!strcmp(Name, "Services"))
		return &Services;
	if (!strcmp(Name, "Phone"))
		return &Phone;
	return NULL;
}

HEADING* Advertisment::HeadingMember(char* Name){
	if (!strcmp(Name, "Rubric"))
		return &Rubric;
	return NULL;
}

#endif
...
Рейтинг: 0 / 0
17.05.2014, 19:17
    #38644240
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как занести список в контейнер?
nick95nickКак контейнер выглядит в перечислении полей класса и как с ним работать в
данном случае?
Точно так же как и в любом другом месте: array<AnyType> var;
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
18.05.2014, 11:33
    #38644392
locked
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как занести список в контейнер?
nick95nick,

Я бы держал все это хозяйство в Property Tree . Включая все то что у тебя уже есть.
...
Рейтинг: 0 / 0
18.05.2014, 19:49
    #38644609
nick95nick
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как занести список в контейнер?
Выходит что придется вводить в каждой функции цикл, или достаточно будет просто прописать перед Services array?
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Как занести список в контейнер? / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]