powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Друзья шаблонов с закрытым конструктором
4 сообщений из 4, страница 1 из 1
Друзья шаблонов с закрытым конструктором
    #39372934
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ситуация такая:
Есть класс-шаблон A, у которого закрыт конструктор. Один из параметров шаблона - класс для создания (там метод Create) только, который возвращает shared_ptr<A>. До того, как класс стал шаблоном, всё было ок, у него был друг shared_ptr<A>, а теперь у него друг shared_ptr<A<T>> и компилятор его не видит :(
...
Рейтинг: 0 / 0
Друзья шаблонов с закрытым конструктором
    #39372965
Фотография NekZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CEMbСитуация такая:
Есть класс-шаблон A, у которого закрыт конструктор. Один из параметров шаблона - класс для создания (там метод Create) только, который возвращает shared_ptr<A>. До того, как класс стал шаблоном, всё было ок, у него был друг shared_ptr<A>, а теперь у него друг shared_ptr<A<T>> и компилятор его не видит :(
А это точно не помогает?
...
Рейтинг: 0 / 0
Друзья шаблонов с закрытым конструктором
    #39373421
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NekZ, нет, я как раз ровно оттуда пришёл :) ну или как-то не так готовлю...
Т.е. ещё раз, есть шаблон A у него друг-шаблон shared_ptr. Пока A не был шаблоном, дружба выглядела так:

friend class shared_ptr<A>;

всё ок, теперь А стал шаблоном, дружба, выглядит так:

friend class shared_ptr<A<T>>;

и вот тут warning выдаётся, что не удалось создать деструктор для A<B>. Соответственно,

friend class shared_ptr<A<B>>;

всё ок.
...
Рейтинг: 0 / 0
Друзья шаблонов с закрытым конструктором
    #39373424
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я тукан, надо было внимательнее читать сообщения
у A родительский класс C с закрытым деструктором, в этом была проблема, перевод его в защищённый решил проблему.
Но всё равно непонятно немного. shared_ptr друг А, но shared_ptr не друг C, shared_ptr будет убивать A, какое ему дело до закрытости деструктора C? Ну, т.е. классу А есть дело, он должен был выругаться, что не может достучаться до деструктора B, но в списке ошибок пока не вижу ничего такого.
Накатал небольшой пример, там всё ок, нельзя создать объект, если в родительских классах есть закрытые деструкторы. Ладно... буду позже разбираться
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Друзья шаблонов с закрытым конструктором
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]