331 / 283 / 78
Регистрация: 02.08.2016
Сообщений: 1,008
|
|||||||||||||||||||||
1 | |||||||||||||||||||||
Правильное использование умных указателей, как членов класса11.01.2017, 01:31. Показов 1799. Ответов 9
Метки нет Все метки)
(
Допустим у нас есть класс Node, объекты которого могут хранить вложенные Node, как правильнее объявлять конструктор?
Так?
И если я правильно понял, здесь лучше использовать unique_ptr. Как его передавать через конструктор? Следующий вариант
0
|
|
11.01.2017, 01:31 | |
Ответы с готовыми решениями:
9
Использование умных указателей Использование умных указателей для массива символов Правильное использование указателей на процедуры без параметров |
331 / 283 / 78
Регистрация: 02.08.2016
Сообщений: 1,008
|
||||||
11.01.2017, 01:45 [ТС] | 3 | |||||
что-то вроде?
0
|
![]() ![]() |
||||||
11.01.2017, 07:45 | 4 | |||||
DevAlone, что-то вроде:
1
|
331 / 283 / 78
Регистрация: 02.08.2016
Сообщений: 1,008
|
|||||||||||
11.01.2017, 17:53 [ТС] | 5 | ||||||||||
Спасибо, а про первый вопрос, какой конструктор правильнее?
0
|
![]() 8718 / 4299 / 957
Регистрация: 15.11.2014
Сообщений: 9,743
|
|
11.01.2017, 18:29 | 6 |
1
|
Форумчанин
![]() ![]() 8193 / 5043 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
|
|
11.01.2017, 18:54 | 7 |
Если есть вероятность кольцевой зависимости, то правильно использовать std::weak_ptr.
1
|
331 / 283 / 78
Регистрация: 02.08.2016
Сообщений: 1,008
|
|
11.01.2017, 22:27 [ТС] | 8 |
0
|
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
|
|
11.01.2017, 22:48 | 9 |
1
|
![]() 8718 / 4299 / 957
Регистрация: 15.11.2014
Сообщений: 9,743
|
|
12.01.2017, 01:20 | 10 |
в обоих случаях нарушается инвариант Node
не сложно смоделировать ситуацию, при которой будет поломка. так например, в первом случае с сырым указалетем, нода начинает зависеть от корректности вызывающей стороны. мы можем закинуть невалидный указатель. либо сначала скормить валидный, а потом убить ребенка снаружи. и тогда нода уже окажется в неконсистентном состоянии. так же, ваш код допускает, что в качестве ребенка может оказаться сам родитель. во втором случае это легко может привести к циклической зависимости. Добавлено через 3 минуты что бы смоделировать граф, нужно велосипедить сборку мусора. в деревья контролируют создание ребенка, и держат его по значению
2
|
12.01.2017, 01:20 | |
Помогаю со студенческими работами здесь
10
Подскажите как переписать класс с использованием умных указателей, либо STL Использование динамических массивов как членов класса
Подсчет умных указателей Приведение типов умных указателей Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |