Форум программистов, компьютерный форум CyberForum.ru

Как создать структуру-список, поля которой — ссылка на такую же структуру - C++

Войти
Регистрация
Восстановить пароль
 
Insanus
0 / 0 / 0
Регистрация: 13.05.2014
Сообщений: 36
19.06.2014, 16:58     Как создать структуру-список, поля которой — ссылка на такую же структуру #1
Суть вопроса в том, как создать структуру-список, поля которой - ссылка на сл. элемент(такую же структуру) и ссылка на объект, относящийся к любому из классов. Проще говоря - список из объектов, относящихся к разным классам.
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.06.2014, 16:58     Как создать структуру-список, поля которой — ссылка на такую же структуру
Посмотрите здесь:

C++ Создать структуру данных о работнике, объединить несколько в список, отсортировав по зарплате
Не работает ссылка на структуру C++
Написать структуру у которой 2 целочисленных поля, объявить массив из 5 соответствующих структур C++
Создать структуру с именем Sportsmen и сформировать односвязный список C++
Ссылка на структуру C++
Создать структуру с именем Train, содержащую следующие поля: C++
C++ Создать структуру, элементами которой являются фамилия студента и оценки
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Тамика
Котовчанин
 Аватар для Тамика
863 / 443 / 129
Регистрация: 16.02.2010
Сообщений: 2,568
Записей в блоге: 27
19.06.2014, 17:03     Как создать структуру-список, поля которой — ссылка на такую же структуру #2
Такое?
C++
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
#include <iostream>
 
class Class1
{
public: 
    Class1()
    {
        std::cout << "Class1!!! \n";
    }
};
 
class Class2
{
public: 
    Class2() 
    {
        std::cout << "Class2!!! \n";
    }
};
 
class Class3
{
public: 
    Class3()
    {
        std::cout << "Class3!!! \n";
    }
};
 
struct SomeStruct
{
    Class1* class1;
    Class2* class2;
    Class3* class3;
};
 
int main()
{
    Class1 *cl1 = new Class1();
    Class2 *cl2 = new Class2();
    Class3 *cl3 = new Class3();
    SomeStruct str;
    str.class1 = cl1;
    str.class2 = cl2;
    str.class3 = cl3;
 
    system("pause>>null");
}
Insanus
0 / 0 / 0
Регистрация: 13.05.2014
Сообщений: 36
19.06.2014, 17:06  [ТС]     Как создать структуру-список, поля которой — ссылка на такую же структуру #3
Плохо, если у нас будет сотня разных объектов - сотню ссылок в каждом элементе списка иметь - не хорошо. Да и много других проблем будет.
0x10
2438 / 1610 / 235
Регистрация: 24.11.2012
Сообщений: 3,949
19.06.2014, 17:54     Как создать структуру-список, поля которой — ссылка на такую же структуру #4
Делайте классам общий базовый класс, держите в списке указатель на него...
Deiron
25 / 25 / 1
Регистрация: 25.05.2009
Сообщений: 98
19.06.2014, 17:56     Как создать структуру-список, поля которой — ссылка на такую же структуру #5
если честно, как это реализовать без "общего предка" - не очень представляю.
Через шаблоны? По идее, да, должно работать. (просто не пробовал делать хранилище под "совсем разные данные")
0x10
2438 / 1610 / 235
Регистрация: 24.11.2012
Сообщений: 3,949
19.06.2014, 17:57     Как создать структуру-список, поля которой — ссылка на такую же структуру #6
Цитата Сообщение от Deiron Посмотреть сообщение
По идее, да, должно работать. (просто не пробовал делать хранилище под "совсем разные данные")
boost::variant
Insanus
0 / 0 / 0
Регистрация: 13.05.2014
Сообщений: 36
19.06.2014, 17:59  [ТС]     Как создать структуру-список, поля которой — ссылка на такую же структуру #7
Хммм... это хороший вариант спасибо. Можно как-то через шаблоны вроде... но не соображу как.
Kuzia domovenok
 Аватар для Kuzia domovenok
1886 / 1741 / 117
Регистрация: 25.03.2012
Сообщений: 5,912
Записей в блоге: 1
19.06.2014, 18:20     Как создать структуру-список, поля которой — ссылка на такую же структуру #8
Insanus, а зачем может понадобиться список объектов, не имеющих абсолютно ничего общего? Не имеющих даже базового класса общего? Зачем? Ты их никак из этого списка не достанешь же!
Deiron
25 / 25 / 1
Регистрация: 25.05.2009
Сообщений: 98
19.06.2014, 20:45     Как создать структуру-список, поля которой — ссылка на такую же структуру #9
Сообщение было отмечено автором темы, экспертом или модератором как ответ
возможно, имеется в виду "список произвольных элементов" (но в каждом списке все элементы однотипные).

Тогда пожалуйста:
C++
1
2
3
4
5
6
template< class T >
struct List
{
List * next;
T Data
};
насколько это работает со структурами - я фз. В классах такая запись:
C++
1
2
3
4
5
6
7
8
9
10
class List
{
private:
//....
List * next;
T Data
//...
public:
//...
};
А затем:
C++
1
List <тип> SomeVariable
работает.
Insanus
0 / 0 / 0
Регистрация: 13.05.2014
Сообщений: 36
20.06.2014, 05:48  [ТС]     Как создать структуру-список, поля которой — ссылка на такую же структуру #10
Таки сделал с общм базовым классом. Не думал, что, переопределив в дочернем классе, мы будем иметь возможность обратиться именно к переопределённой функции

Добавлено через 1 минуту
Так я и сделал, спасибо
Deiron
25 / 25 / 1
Регистрация: 25.05.2009
Сообщений: 98
20.06.2014, 09:14     Как создать структуру-список, поля которой — ссылка на такую же структуру #11
Ну, вообще то для этого и придумали "интерфейсы" (aka "абстрактные классы").

Я надеюсь, вы не забыли, что функция должны быть virtual, чтобы нормально вызывалось:
C++
1
2
3
Base *ptr;
//....
ptr->SomeFunction(); //реально вызовется функция наследника
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.06.2014, 09:19     Как создать структуру-список, поля которой — ссылка на такую же структуру
Еще ссылки по теме:

C++ Для студентов 1 курсов - Курсовая (создать структуру, элементами которой являются фамилия студента и его возраст)
C++ Создать структуру с именем STUDENT, содержащую следующие поля:
Как правильно написать функцию, которая редактирует структуру по полю Name и возвращает новую, исправленную структуру?.. C++
Как добавить текстовые поля в структуру C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Insanus
0 / 0 / 0
Регистрация: 13.05.2014
Сообщений: 36
20.06.2014, 09:19  [ТС]     Как создать структуру-список, поля которой — ссылка на такую же структуру #12
Deiron, я не знал, что вызываться будет переопределенная функция, вчера разобрался, спасибо
Yandex
Объявления
20.06.2014, 09:19     Как создать структуру-список, поля которой — ссылка на такую же структуру
Ответ Создать тему
Опции темы

Текущее время: 21:56. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru