Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > C++ > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Ответ
 
Опции темы
Старый 25.12.2018, 15:50   #1
Anton_Jag
Пользователь
 
Регистрация: 06.11.2009
Сообщений: 41
Репутация: 10
По умолчанию Шаблонный список

Шаблонный список хранит объекты разных типов PEOPLE - базовый класс, а INFO, PREPOD - его потомки MOS, SUBINF - сторонние классы. Хочу хранить в одном списке ссылки на INFO и PREPOD - LIST<PREPOD*>
Подскажите как реализовать?
Код:

template<typename G>
class LIST
{
private:
	LIST *next;  //указатель на следующий элемент списка
	G* data;      //хранимые данные
	LIST(G* value)
		//Конструктор для данных
	{
		data = value;
		next = NULL;
	}
public:
	LIST()
		//конструктор
	{
		next = NULL;
	}
	~LIST()
		//деструктор обнуления
	{
		if (next != NULL)
			delete next;
	}

	/*
	void putinfo(INFO* value)  //поместить в список инфу
	{
		LIST *pu;
		pu = new LIST(value);
		pu->next = next;
		next = pu;
	}

	void putinfo(PREPOD* value)  //поместить в список инфу
	{
		LIST *pu;
		pu = new LIST(value);
		pu->next = next;
		next = pu;
	}

	void putinfo(MOS* value)  //поместить в список инфу
	{
		LIST *pu;
		pu = new LIST(value);
		pu->next = next;
		next = pu;
	}

	void putinfo(SUBINF* value)  //поместить в список инфу
	{
		LIST *pu;
		pu = new LIST(value);
		pu->next = next;
		next = pu;
	}*/
	void putinfo(G* value)  //поместить в список инфу
	{
		LIST *pu;
		pu = new LIST(value);
		pu->next = next;
		next = pu;
	}


Последний раз редактировалось Anton_Jag; 25.12.2018 в 16:23.
Anton_Jag вне форума   Ответить с цитированием
Старый 25.12.2018, 16:05   #2
p51x
Профессионал
 
Регистрация: 15.02.2010
Сообщений: 13,090
Репутация: 2237
По умолчанию

Если инфо базовый для периода, то храните указатели на инфо.
__________________
Запомните раз и навсегда: помочь != "решите за меня"!
p51x вне форума   Ответить с цитированием
Старый 25.12.2018, 16:26   #3
Anton_Jag
Пользователь
 
Регистрация: 06.11.2009
Сообщений: 41
Репутация: 10
По умолчанию

Код:

LIST<PEOPLE*> *ZZ = new LIST<PEOPLE*>();

INFO* st;
PREPOD* pr;

st = new INFO();
st->AddData();
ZZ->putinfo(st);

Серьезность Код Описание Проект Файл Строка Состояние подавления
Ошибка (активно) E0167 аргумент типа "INFO *" несовместим с параметром типа "PEOPLE **" NewLab3 C:\Users\1\Documents\Visual Studio 2017\Projects\NewLab3\NewLab3\NewLa b3.cpp 88
Серьезность Код Описание Проект Файл Строка Состояние подавления
Ошибка C2664 "void LIST<PEOPLE *>:utinfo(G *)": невозможно преобразовать аргумент 1 из "INFO *" в "G *" NewLab3 c:\users\1\documents\visual studio 2017\projects\newlab3\newlab3\newla b3.cpp 88
Anton_Jag вне форума   Ответить с цитированием
Старый 25.12.2018, 16:28   #4
Anton_Jag
Пользователь
 
Регистрация: 06.11.2009
Сообщений: 41
Репутация: 10
По умолчанию

базовый класс PEOPLE храню ссылки на template<typename> G*
так как в list могут также быть помещены другие не родственные классы
Anton_Jag вне форума   Ответить с цитированием
Старый 25.12.2018, 16:46   #5
p51x
Профессионал
 
Регистрация: 15.02.2010
Сообщений: 13,090
Репутация: 2237
По умолчанию

Давайте структуру классов. Какие отношения у PEOPLE и INFO?

Цитата:
Сообщение от Anton_Jag Посмотреть сообщение
так как в list могут также быть помещены другие не родственные классы
Тогда вам нужен не шаблон, а лист с указателем на воид и полем для описания типа. Ну или я вас не понял.
__________________
Запомните раз и навсегда: помочь != "решите за меня"!
p51x вне форума   Ответить с цитированием
Ответ

Опции темы

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

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

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Шаблонный класс Valera97 Помощь студентам 7 14.06.2017 14:28
C++ - шаблонный класс FYNZIK Помощь студентам 0 22.03.2015 21:48
Шаблонный класс Мортира Общие вопросы C/C++ 0 18.04.2013 21:48
Шаблонный класс С++ MAO25 Помощь студентам 0 21.05.2010 23:46
Шаблонный односвязный список _ares_ Общие вопросы C/C++ 4 06.12.2008 22:35


07:29.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru