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

Как это сделать? - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 5.00
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
19.04.2013, 20:14     Как это сделать? #1
Класс, у него несколько гарантированных экземпляров, из них ровно один создан конструктором по умолчанию, средствами языка запрещено создавать другие экземпляры конструктором по умолчанию, но можно создавать дополнительные экземпляры конструкторами с параметрами, любой экземпляр может быть приведён к std::string, или без приведения выведен в поток std::cout, все поля private, единственный public конструктор принимает два дабла, std::string и ссылку на собственный класс, которая в том числе может ссылаться на экземпляр, созданный конструктором по умолчанию.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.04.2013, 20:14     Как это сделать?
Посмотрите здесь:

Как это сделать? C++
Ну как это сделать? C++
C++ Как это сделать?
C++ Как это сделать ? [c++]
Как это сделать? C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
vxg
Модератор
 Аватар для vxg
2662 / 1673 / 157
Регистрация: 13.01.2012
Сообщений: 6,223
22.04.2013, 15:19     Как это сделать? #41
Цитата Сообщение от taras atavin Посмотреть сообщение
коряга
многозначное слово. я имею ввиду поле объекта хранящее родителя у вас что? ссылка (не указатель)? т.е. вы не можете перемещать объекты т.к. ссылка может быть присвоена только при создании объекта? это удобно? или так и задумано?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
22.04.2013, 15:41  [ТС]     Как это сделать? #42
Цитата Сообщение от vxg Посмотреть сообщение
поле объекта хранящее родителя у вас что? ссылка (не указатель)
Как раз указатель, адрес берётся внутри конструктора.

Добавлено через 49 секунд
Цитата Сообщение от vxg Посмотреть сообщение
многозначное слово.
Ну дерево, только очень кривое. Саксаул копчёный.

Добавлено через 1 минуту
Цитата Сообщение от vxg Посмотреть сообщение
вы не можете перемещать объекты т.к. ссылка может быть присвоена только при создании объекта? это удобно? или так и задумано?
Так задумано.
vxg
Модератор
 Аватар для vxg
2662 / 1673 / 157
Регистрация: 13.01.2012
Сообщений: 6,223
22.04.2013, 16:20     Как это сделать? #43
фразы
Цитата Сообщение от taras atavin Посмотреть сообщение
Как раз указатель
Цитата Сообщение от taras atavin Посмотреть сообщение
Так задумано
противоречат друг другу. в объекте
C++
1
node &parent;
или
C++
1
node *parent;
Добавлено через 3 минуты
...как вариант для этапа разработки сделать такой ад: определять макросом. для root объекта использовать свой макрос. для остальных - свой. в макросе root объекта смотреть не определена ли ROOT... видите, какой маразм - все свелось к тому что в тексте программы не должно быть двух DEFINE_ROOT()
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
22.04.2013, 16:35  [ТС]     Как это сделать? #44
Цитата Сообщение от vxg Посмотреть сообщение
противоречат друг другу. в объекте
Код C++
1
node &parent;
или
Код C++
1
node *parent;
в объекте
C++
1
A *based;
, в конструкторе
C++
1
2
3
A::A(A &based...)
{
 this->based=&based;
, а задумано, что они не должны перемещаться.
vxg
Модератор
 Аватар для vxg
2662 / 1673 / 157
Регистрация: 13.01.2012
Сообщений: 6,223
22.04.2013, 16:49     Как это сделать? #45
если дерево постоянное нужно либо
C++
1
const node *parent;
либо
C++
1
node &parent;
а вообще ацки опасная вещь ибо человек может подобавлять локальных объектов в дерево. хотя я не знаю как оно там у вас. так что по поводу варианта? не?
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
22.04.2013, 16:56  [ТС]     Как это сделать? #46
Цитата Сообщение от vxg Посмотреть сообщение
а вообще ацки опасная вещь ибо человек может подобавлять локальных объектов в дерево.
Локальные объекты не могут быть использованы в качестве баз для глобальных, так что это как раз не беда. Кроме того, класс не спроста знает все свои экземпляры, это будет использовано для того, чтоб в деструкторе объекта найти всех его потомков и провалить указатель в сторону корня на случай, если в одном и том же локальном поддереве будет смешаны статические и автоматические узлы. При этом будут корректироваться другие поля.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.04.2013, 14:10     Как это сделать?
Еще ссылки по теме:

C++ как это сделать
Как это сделать? C++
C++ нужно создать таблицу из 3 строк и 4 столбцов и заполнить её (любой информацией,это неважно) . Как это можно сделать ?

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

Или воспользуйтесь поиском по форуму:
vxg
Модератор
 Аватар для vxg
2662 / 1673 / 157
Регистрация: 13.01.2012
Сообщений: 6,223
23.04.2013, 14:10     Как это сделать? #47
Цитата Сообщение от taras atavin Посмотреть сообщение
Локальные объекты не могут быть использованы в качестве баз для глобальных
а как оно поймет кто из них кто ?
Цитата Сообщение от taras atavin Посмотреть сообщение
статические и автоматические узлы
это что за узлы такие?
Yandex
Объявления
23.04.2013, 14:10     Как это сделать?
Ответ Создать тему
Опции темы

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