Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

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

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

Купить рекламу на форуме - 42 тыс руб за месяц

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

Шаблонный список хранит объекты разных типов 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 в 15:23.
Anton_Jag вне форума Ответить с цитированием
Старый 25.12.2018, 15:05   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,694
По умолчанию

Если инфо базовый для периода, то храните указатели на инфо.
p51x вне форума Ответить с цитированием
Старый 25.12.2018, 15:26   #3
Anton_Jag
Пользователь
 
Регистрация: 05.11.2009
Сообщений: 41
По умолчанию

Код:
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, 15:28   #4
Anton_Jag
Пользователь
 
Регистрация: 05.11.2009
Сообщений: 41
По умолчанию

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

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

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


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


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