Заблокирован
|
||||||||||||||||
1 | ||||||||||||||||
Циклическая ссылка h-ников, что делать?22.10.2015, 10:18. Показов 1284. Ответов 16
Метки нет Все метки)
(
есть два h-ника ссылающиеся друг на друга, дело в том что в них есть классы использующие друг друга (переменные в классах), поэтому они должны ссылаться друг на друга, в итоге куча ошибок компиляции... #pragma once подключено везде где только можно, но это не помогает
![]() Добавлено через 8 минут например Header.h
0
|
|
22.10.2015, 10:18 | |
Ответы с готовыми решениями:
16
Неизвестная ошибка сборки, Ссылка не указывает на объект экземпляра, что делать? Циклическая ссылка Циклическая ссылка при попытке получить данные из контроллера
|
Модератор
![]() 12631 / 10128 / 6098
Регистрация: 18.12.2011
Сообщений: 27,159
|
||||||
22.10.2015, 10:18 | 2 | |||||
Используйте предварительное объявление класса
0
|
![]() 8718 / 4299 / 957
Регистрация: 15.11.2014
Сообщений: 9,743
|
||||||||||||||||
22.10.2015, 10:23 | 4 | |||||||||||||||
и ещё теперь на один унылый костыль стало больше. не нужно делать форварды там, где предметная область такова, что классы должны знать друг о друге.
0
|
Модератор
![]() 12631 / 10128 / 6098
Регистрация: 18.12.2011
Сообщений: 27,159
|
|
22.10.2015, 10:23 | 5 |
Еще раз, надо B* b; УКАЗАТЕЛЬ!!!!!!
0
|
Модератор
![]() 12631 / 10128 / 6098
Регистрация: 18.12.2011
Сообщений: 27,159
|
|
22.10.2015, 10:24 | 7 |
hoggy, Использование указатель не требует знания классов друг о друге.
0
|
![]() 8718 / 4299 / 957
Регистрация: 15.11.2014
Сообщений: 9,743
|
|
22.10.2015, 10:24 | 8 |
0
|
Модератор
![]() 12631 / 10128 / 6098
Регистрация: 18.12.2011
Сообщений: 27,159
|
|
22.10.2015, 10:24 | 9 |
Объект создавайте в конструкторе!
А лучше объясните, что Вы хотите от этих классов. У меня подозрение, что на самом деле Вам нужно наследование с виртуальными функциями.
0
|
Модератор
![]() 12631 / 10128 / 6098
Регистрация: 18.12.2011
Сообщений: 27,159
|
|
22.10.2015, 10:28 | 11 |
Объясните, что Вы хотите от этих классов.
0
|
Модератор
![]() 12631 / 10128 / 6098
Регистрация: 18.12.2011
Сообщений: 27,159
|
||||||
22.10.2015, 10:31 | 13 | |||||
Ну тогда мне и не обязательно помогать Вам...
Вот пример инициализации через конструктор
0
|
Модератор
![]() 12631 / 10128 / 6098
Регистрация: 18.12.2011
Сообщений: 27,159
|
|||||||||||
22.10.2015, 10:54 | 15 | ||||||||||
0
|
![]() 8718 / 4299 / 957
Регистрация: 15.11.2014
Сообщений: 9,743
|
|
22.10.2015, 20:35 | 16 |
это нормально, если изначально по смыслу требовался бы указатель.
но если по дизайну предполагается объект, а не указатель на него, то мы неизбежно приходим к идеоме pimpl, что в свою очередь влечет за собой приседания вокруг аллокации памяти под объект. то бишь есть маленький объект. хотелось сделать его обычным мембером. на стеке бы он аллоцировался и конструировался бы мгновенно. ан, нет, pimpl толкает поюзать тормозную new/delete, и все потому, что на плюсах не осилили моральные форварды. можно конечно глянуть в сторону шаблоно-storage, которые умеют аллоцировать в стековом хранилище. что-то вроде boost::optional, например это все ведет к некоторому усложнению кода. но зато может уберечь от динамической памяти и не платить за то, что не заказывали.
0
|
![]() |
|
22.10.2015, 21:25 | 17 |
0
|
22.10.2015, 21:25 | |
Помогаю со студенческими работами здесь
17
Циклическая ссылка (A circular reference was detected while serializing an object of type 'tblProduct') подскажите что делать при вводимых данных 10 25 и 5 20 программа работает не правильно должна выводить 135 подскажите что делать Что лучше сквозная ссылка или одна статейная ссылка с одного домена? Что делать, когда не знаешь, что делать? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |