Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.92/13: Рейтинг темы: голосов - 13, средняя оценка - 4.92
C++
 Аватар для JustLearn
3 / 3 / 1
Регистрация: 21.10.2017
Сообщений: 121
1

Специализация шаблона

30.09.2018, 21:18. Показов 2378. Ответов 8

Author24 — интернет-сервис помощи студентам
Всем доброго вечера! Возникает непонятная ошибка при создании специализации родового класса cl. В строке 10:
template class cl<int> выдаёт ошибки:
недопустимое явное объявление создания экземпляра
cl<int>: недопустимое явное создание экземпляра


Что не так? Как исправить?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <conio.h>
using namespace std;
template <class t> class cl {
    t x;
public:
    cl(t a) { x = a; cout << "Внутри cl<class t>\n"; }
    t get_x() { return x; }
};
template class cl<int> {
    int x;
public:
    cl(int a) {
        x = a*a;
        cout << "Внутри специализации cl<int>\n";
    }
    int get_x() { return x; }
};
int main() {
 
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
30.09.2018, 21:18
Ответы с готовыми решениями:

специализация шаблона
начал разбираться с шаблонами. если есть структура, и одна функция именно с int должна работать по...

специализация шаблона
Добрый день! Хотелось бы сделать шаблонную функцию, у которой будет различная реализация в...

Специализация шаблона
Здравствуйте! Задача: Создайте шаблонную функцию maxn(), которая принимает в качестве...

Специализация шаблона
Привет, у меня есть вот такой шаблон дерева: template &lt;typename T = int&gt; class Tree{ ...

8
1394 / 1023 / 325
Регистрация: 28.07.2012
Сообщений: 2,813
30.09.2018, 21:26 2
Цитата Сообщение от JustLearn Посмотреть сообщение
template class cl<int>
C++
1
template<> class cl<int>
1
C++
 Аватар для JustLearn
3 / 3 / 1
Регистрация: 21.10.2017
Сообщений: 121
30.09.2018, 22:03  [ТС] 3
nonedark2008, спасибо!
0
30 / 21 / 8
Регистрация: 23.09.2018
Сообщений: 186
01.10.2018, 01:04 4
Цитата Сообщение от JustLearn Посмотреть сообщение
родового класса
это шаблоны?
0
C++
 Аватар для JustLearn
3 / 3 / 1
Регистрация: 21.10.2017
Сообщений: 121
01.10.2018, 12:21  [ТС] 5
stu4ent, да.

Добавлено через 7 минут
nonedark2008, я обучаюсь по учебнику 2013 года и там приведена такая форма:
C++
1
template class cl<int>
Я так понял, что она уже неактуальна. А какие преимущества даёт создание специализации родового класса таким образом, как Вы показали. Я имею в виду, что можно поставить в угловые скобки template<> и какое значение это будет иметь. Приведите пожалуйста простой пример если Вам несложно
0
Эксперт С++
 Аватар для hoggy
8972 / 4318 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
01.10.2018, 12:56 6
Цитата Сообщение от JustLearn Посмотреть сообщение
Я так понял, что
есть подозрение, что не вразумели материал, который прочитали в книжке.

в с++ есть понятие "явное инстанцирование шаблона"

синтаксис явного инстанцирования:
C++
1
template class cl<int>;
ничего вам не напоминает?

область применения,
и наглядный пример можно подсмотреть вот здесь:
https://ipc.susu.ru/8504-4.html

Цитата Сообщение от JustLearn Посмотреть сообщение
А какие преимущества даёт создание специализации родового класса таким образом, как Вы показали.
откройте любой букварь, глава:
"частичная и полная специализация шаблонов".
0
C++
 Аватар для JustLearn
3 / 3 / 1
Регистрация: 21.10.2017
Сообщений: 121
01.10.2018, 13:44  [ТС] 7
hoggy,
Цитата Сообщение от hoggy Посмотреть сообщение
сть подозрение, что не вразумели материал, который прочитали в книжке.
в с++ есть понятие "явное инстанцирование шаблона"
синтаксис явного инстанцирования:
template class cl<int>;
Дело в том, что как раз
C++
1
template class cl<int>
не работает. Выдаёт ошибки, о чём я и написал когда задавал вопрос. Программа работает только если написать так:
C++
1
template<> class cl<int>
0
19409 / 10028 / 2443
Регистрация: 30.01.2014
Сообщений: 17,678
01.10.2018, 14:23 8
Цитата Сообщение от JustLearn Посмотреть сообщение
Дело в том, что как раз не работает
Дело в том, что оно работает, но вы неверно им пользуетесь.

Добавлено через 10 минут
Цитата Сообщение от JustLearn Посмотреть сообщение
А какие преимущества даёт создание специализации родового класса таким образом, как Вы показали. Я имею в виду, что можно поставить в угловые скобки template<> и какое значение это будет иметь.
Это синтаксис объявления полной специализации.

Цитата Сообщение от nonedark2008 Посмотреть сообщение
template<> class cl<int>
Только так и можно объявить полную специализацию шаблона класса с одним шаблонным параметром.
А то, что вы показали в стартовом посте - это смешивание синтаксиса явного инстанцирования, и специализации класса - естественно будет ошибка, т.к. это бессмысленно. Перечитайте еще раз пост hoggy (и пример, который он дал по ссылке).

Варианта два. Либо вы и правда что-то напутали, читая книгу, либо в книге опечатка и пустые угловые скобки были пропущены.
Третьего тут нет.
0
C++
 Аватар для JustLearn
3 / 3 / 1
Регистрация: 21.10.2017
Сообщений: 121
07.10.2018, 14:50  [ТС] 9
DrOffset, да действительно в книге была опечатка.
0
07.10.2018, 14:50
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
07.10.2018, 14:50
Помогаю со студенческими работами здесь

Специализация шаблона
Пытаюсь специализировать шаблон для типа float, но не получается. В чем проблема? Компилятор:...

Специализация шаблона класса
Имеется задание: Создать свой шаблонный класс – динамический массив (myvector). Создать методы...

Явная специализация шаблона
Добрый день. Подскажите пожалуйста, почему запускается шаблонная функция а не явная специализация?...

Явная специализация шаблона
Здравствуйте. Не совсем разобрася с сабжем. Например, если есть кусочек кода: template &lt;typename...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Проектирование и моделирование
hw_wired 28.01.2025
Введение в моделирование Моделирование представляет собой один из фундаментальных методов научного познания, который позволяет изучать объекты и явления через создание их упрощенных аналогов. В. . .
Алгоритмы и исполнители
hw_wired 28.01.2025
Введение в алгоритмы В современном мире информационных технологий алгоритмы играют основополагающую роль в решении различных задач и автоматизации процессов. Алгоритм представляет собой точную. . .
Хранение информации
hw_wired 28.01.2025
Введение: Роль систем хранения информации в современном мире В современную эпоху цифровых технологий эффективное хранение информации становится одним из ключевых факторов успешного развития любой. . .
Обработка числовой информации
hw_wired 28.01.2025
Введение в обработку числовой информации В современном мире обработка числовой информации стала неотъемлемой частью как профессиональной деятельности, так и повседневной жизни. Электронные таблицы. . .
Мультимедиа
hw_wired 28.01.2025
Введение в мультимедийные технологии В современном мире мультимедийные технологии стали неотъемлемой частью нашей жизни, проникнув во все сферы человеческой деятельности. Термин "мультимедиа". . .
Обработка текстовой информации
hw_wired 28.01.2025
Введение в обработку текстовой информации В современном мире обработка текстовой информации играет фундаментальную роль в различных сферах человеческой деятельности. Текстовые редакторы стали. . .
Обработка графической информации
hw_wired 28.01.2025
Введение в компьютерную графику Компьютерная графика стала неотъемлемой частью современного цифрового мира, пройдя впечатляющий путь развития от простейших черно-белых изображений до сложных. . .
Python в Алгоритмике: Решение задач
hw_wired 28.01.2025
Введение в Python и Алгоритмику В современном мире программирование стало неотъемлемой частью образования и профессионального развития. Python зарекомендовал себя как один из самых популярных и. . .
Компьютер как универсальное устройство для работы с информацией
hw_wired 28.01.2025
Введение в устройство компьютера Компьютер представляет собой универсальное электронное устройство, предназначенное для автоматической обработки информации. В современном мире компьютер стал. . .
Информация и информационные процессы
hw_wired 28.01.2025
Понятие информации и ее виды В современном мире информация является одним из фундаментальных понятий, пронизывающих все сферы человеческой деятельности. Под информацией понимают любые сведения об. . .
Алгоритмика
hw_wired 28.01.2025
Введение: Основы алгоритмики и её роль в информатике В современном мире программирование и алгоритмическое мышление стали неотъемлемой частью образования и профессиональной деятельности. . . .
Информационное моделирование
hw_wired 28.01.2025
Введение в информационное моделирование В современном мире информационное моделирование стало неотъемлемой частью научной, образовательной и профессиональной деятельности. Это мощный инструмент. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru