0 / 0 / 0
Регистрация: 18.11.2014
Сообщений: 28
|
|||||||||||
1 | |||||||||||
Возврат объекта шаблонного типа от типа Type из специализации шаблона метода от того же типа22.03.2016, 21:40. Показов 1764. Ответов 5
Доброго времени суток, пишу класс содержащий несколько std::set от разных типов, нужно сделать метод возвращающий указатель на нужное std::set, в зависимости от того какой тип был подан в шаблон, хочу это реализовать специализацией шаблонов, в черновиках стандарта похожего не нашел.
Класс с шаблоном метода:
Возможнно ли вообще такое? Где об этом почитать? Если в черновиках стандарта и гугле не нашел? Или же примера кода будет достаточно.
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
|
|
22.03.2016, 21:40 | |
Ответы с готовыми решениями:
5
Явная специализация метода для типа шаблонного класса Создать переменную типа, хранящегося в переменной типа Type Можно ли присвоить объекту основного типа значение объекта пользовательского типа? Предполагается ли в C# синтаксис для создания переменной того типа, который указан в переменной Type type |
15636 / 8507 / 2074
Регистрация: 30.01.2014
Сообщений: 14,566
|
||||||
23.03.2016, 10:29 | 2 | |||||
SP_root, невнимательноть банальная. У тебя специализации и основная шаблонная функция имеют разные имена.
Таким образом у тебя есть два пути: * Оставлять специализации в cpp (при этом обязательно убрать у них inline). * Вынести их в заголовочный файл, inline при этом необходимо оставить. Пример: Кликните здесь для просмотра всего текста
Почитать можно в книге "Шаблоны C++. Справочник разработчика."
0
|
0 / 0 / 0
Регистрация: 18.11.2014
Сообщений: 28
|
|||||||||||
23.03.2016, 20:40 [ТС] | 3 | ||||||||||
Решение немного упрощенной задачи, под OpenSuse 13.2 все компилируется и работает, под Windows 7, нет, а программу надо делать под Windows, inline не нужен. Если определить как inline, то видимо вызовется не специализрованный метод.
под мастдаем дает ошибку:
0
|
15636 / 8507 / 2074
Регистрация: 30.01.2014
Сообщений: 14,566
|
||||||
23.03.2016, 20:57 | 4 | |||||
Цитирую себя:
Твой проект успешно собирается (я проверил), если вынести специализации в заголовочный файл. Естественно из cpp их надо убрать.
0
|
0 / 0 / 0
Регистрация: 18.11.2014
Сообщений: 28
|
|
24.03.2016, 08:30 [ТС] | 5 |
Вечером проверю, Можно версию вашего компилятора на всякий пожарный?
0
|
С чаем беда...
![]() ![]() 9808 / 5152 / 1416
Регистрация: 18.10.2014
Сообщений: 12,206
|
|
24.03.2016, 09:38 | 6 |
В определении класса шаблонный метод
getSelectionSetPtr зависит от одного шаблонного параметра TContextRepresented . В специализации же этого метода вы вдруг указали два специализированных аргумента < std::set, FrameSelection > . Почему два? Откуда вдруг взялся второй? Неудивительно, что это не компилируется.
0
|
24.03.2016, 09:38 | |
Помогаю со студенческими работами здесь
6
Как вызвать из одного класса (для метода типа void) метод типа boolean другого класса? Как можно определить что-то типа процедурного типа или классового метода (как в Delphi)? Передать массив элементов(типа int) объекта, в функцию из массивов(типа int) Условие типа if( масив типа char[x] [y] != переменная типа char) не срабатывает Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |