|
13 / 13 / 1
Регистрация: 19.10.2019
Сообщений: 607
|
|
Объявить метод шаблонного класа как friend в другом классе02.08.2020, 15:08. Показов 2166. Ответов 32
Метки нет (Все метки)
Собственно возможно ли это ?
Насколько я помню что нет так как у метода шаблонного класса не может быть внешнего объявления, а только у специализвции.
0
|
|
| 02.08.2020, 15:08 | |
|
Ответы с готовыми решениями:
32
Как объявить класс с переменной String^ в другом классе? Создать объект шаблонного класса в другом классе Нужно вызвать через сторонний метод(в другом классе,который в другом файле) метод в форме |
|
Комп_Оратор)
|
|||||||||||
| 03.08.2020, 01:03 | |||||||||||
|
oleg-m1973, да, это получается)
и вот такой кошмарик. Это от бессонницы.
0
|
|||||||||||
|
Вездепух
13210 / 6843 / 1824
Регистрация: 18.10.2014
Сообщений: 17,306
|
||||||||||||
| 03.08.2020, 03:30 | ||||||||||||
При этом обещанного "turning off access control for 'B'" не происходит, т.е. доступ к B<>::i из A::foo не проходит.
0
|
||||||||||||
|
Комп_Оратор)
|
||||||
| 03.08.2020, 10:14 | ||||||
|
Вот шланг:
https://rextester.com/BUU55477 warning: dependent nested name specifier 'Friend_templ<T>::' for friend class declaration is not supported; turning off access control for 'WhoIsMyFriend' [-Wunsupported-friend] void Friend_templ<T>::foo(const WhoIsMyFriend & who, const T& mess); Добавлено через 21 минуту Фактически тупое отключение контроля доступа - приводит к ужасным последствиям. Вот этот код компилируется и работает на шланге:
Microsoft Visual C++ 2019 нормально компилирует и работает на моей машине. Visual C++ 2019 00435-60000-00000-AA687 Microsoft Visual C++ 2019 На сайте Microsoft (R) C/C++ Optimizing Compiler Version 19.00.23506 for x64 не пропускает: source_file.cpp(29): error C2248: 'WhoIsMyFriend::a': cannot access private member declared in class 'WhoIsMyFriend' source_file.cpp(19): note: see declaration of 'WhoIsMyFriend::a' source_file.cpp(15): note: see declaration of 'WhoIsMyFriend' source_file.cpp(28): note: while compiling class template member function 'void Friend_templ<int>::foo(const WhoIsMyFriend &,const T &)' with [ T=int ] source_file.cpp(37): note: see reference to function template instantiation 'void Friend_templ<int>::foo(const WhoIsMyFriend &,const T &)' being compiled with [ T=int ] source_file.cpp(36): note: see reference to class template instantiation 'Friend_templ<int>' being compiled Microsoft (R) C/C++ Optimizing Compiler Version 19.00.23506 for x64
0
|
||||||
|
248 / 70 / 9
Регистрация: 22.07.2018
Сообщений: 321
|
||||
| 03.08.2020, 11:05 | ||||
B это класс, а не шаблон класса, то "turning off access control" таки происходит.
0
|
||||
|
Комп_Оратор)
|
|
| 03.08.2020, 11:47 | |
|
oleg-m1973, вы изначально знали или угадали? :
https://rextester.com/OKLY5652 clang компилирует вариант с дружественным классом без проблем. Причём в этом случае достаточно объявления во внешнем скоупе без предварительного объявления) msvs тоже работает тихо: https://rextester.com/VKRONA32253
0
|
|
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
||
| 03.08.2020, 11:58 | ||
|
1
|
||
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
|||||||
| 03.08.2020, 12:06 | |||||||
|
Добавлено через 2 минуты Вот, например, из последнего
1
|
|||||||
|
Комп_Оратор)
|
|
| 03.08.2020, 12:43 | |
|
Выглядит внушительно. EBCO интересный зверь сам по себе. Внушительно. Скромно говоря. Приятно глазу)
Вообще, дружба простого класса с шаблоном, имеет нюанс. Интересный способ расширения функциональности простого класса.
0
|
|
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
||
| 03.08.2020, 12:50 | ||
|
0
|
||
|
Комп_Оратор)
|
||
| 03.08.2020, 13:19 | ||
0
|
||
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
|
| 03.08.2020, 13:30 | |
|
1
|
|
|
Комп_Оратор)
|
||
| 03.08.2020, 15:52 | ||
|
Я задал вопрос о точном знании, пытаясь понять знали ли вы точно, что в постановке ТС задача налетит на рифы на ряде компиляторов. С предложенным вами решением всё получается, по крайней мере, на тройке самых-самых. И решение, основанное на классе, решает вопросы любых методов путём добавления дополнительного уровня косвенного обращения. Обёртки например. С другой стороны интерфейс - настолько тонкий вопрос, как часть инкапсуляции, что написание специального шаблонного класса селектирующего уже существующие шаблоны как классов так и методов (if any), это вполне разумный шаг. oleg-m1973, это просто мысли в слух на заданную тему. Вам плюсы за очень чёткий ответ на старте темы.
0
|
||
| 03.08.2020, 15:52 | |
|
Как объявить массив объектов одного класса в другом классе, а затем поместить в него объекты?
Как объявить friend функцию класса Наследование шаблонного класа Специализация шаблонного класа Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
сукцессия 29. Переход от одних деревьев на другие делать более или менее вероятностным?
anaschu 12.07.2026
Насколько смена типов микоризы — исключительное событие в двухвековой сукцессии? Оценка вероятности в пространстве параметров
В текущей версии модели успешно реализован ключевой механизм. . .
|
сукцессия 27. Думаю, как переделывать уже написанную статью с планами на сукцессию.
anaschu 12.07.2026
Анализ соответствия модели требованиям
Реализованные компоненты:
Механизм закисления почвы через протонную помпу
Конкуренция между типами микориз
pH как триггер сукцессии
C/ P соотношение. . .
|
Сукцессия 26. Мат модель создана.
anaschu 12.07.2026
Модель смены растительных сукцессий посредством управления грибами работает внутри небольшой ячейки почвы, восстанавливающейся после пожара, где ненадолго бывшее царство хвойных снова захватили. . .
|
Решил проблему с ошибкой пагинации сообщений с сервера на алгоритме обхода дерева "Эстафета хвоста".
Hrethgir 12.07.2026
Проблема была в том, что удалялась именно новая кнопка, а не старая. Ни один ИИ не обнаружил это, а сам я смог только когда с работой стало попроще и когда заставил работать будущее автономное. . .
|
|
сукцессия 25. Хронология ошибок
anaschu 12.07.2026
# От 50-тонного гриба до устойчивого леса: хроника ошибок при построении модели вековой сукцессии микоризы
## О чём эта статья
В процессе построения ОДУ-модели (система дифференциальных. . .
|
сукцессия 24. Промежуточное общее описание модели
anaschu 12.07.2026
Хендофф: модель АМ→ЭКМ сукцессии микоризы (ризосфера, 50 лет)
Содержание проекта
Симуляция вековой (50 лет) экологической сукцессии в почве леса
Основные участники: АМ-гриб, ЭКМ-гриб,. . .
|
сукцессия 23. Более физиологичная физиология, более экологичная экология, более диффурные диффуры.
anaschu 12.07.2026
Что реально нашли и починили за эти 5 часов
Правило Линдемана (КПД конверсии сахара в тело, kEff) — раньше 100% полученного углерода шло прямо в биомассу гриба; теперь только kEff=0. 5 (после. . .
|
сукцессия 22. От артефактов к физиологии: калибровка агентной модели грибной сукцессии для воспроизведения сезонной динамики и pH-плато
anaschu 11.07.2026
Аннотация
В данной работе представлена калибровка агентной модели динамики грибных сообществ (fungal-succession), направленная на устранение нефизичных артефактов (коллапс биомассы, мгновенное. . .
|