Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Unifan
0 / 0 / 0
Регистрация: 11.08.2014
Сообщений: 40
#1

Ошибка определения специализации шаблонного класса - C++

22.08.2014, 18:45. Просмотров 241. Ответов 5
Метки нет (Все метки)

На этом месте вылазит ошибка: Error 1 error C3413: 'MyClass<int>' : invalid explicit instantiation
C++ (Qt)
1
template class MyClass<int>
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <iostream>
using namespace std;
 
template <class T> class MyClass {
    T x;
public:
    MyClass(T a) {
        cout << "Внутри конструктора родового класса\n";
        x = a;
    }
 
    T getx() { return x; }
};
 
// Явная специализация для int
template class MyClass<int> {
    int x;
public:
    MyClass(int a) {
        cout << "Внутри специализации MyClass<int>\n";
        x = a * a;
    }
 
    int getx() { return x; }
};
ЧаВо делать?
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.08.2014, 18:45     Ошибка определения специализации шаблонного класса
Посмотрите здесь:

Ошибка при создании шаблонного класса - C++
Всем привет!!!! пытаюсь реализовать паттерн итератор для двусвязного списка но до реализации пока не дошел потому что при компиляции код...

Специализации шаблонов класса - C++
Из книги Просьба пример показать. А-то не очень понятно. Как-то очень обобщенно.

Ошибка при специализации шаблона - C++
Пишу: template &lt;&gt; struct Test &lt; int&gt; { Test(int x) :x(x) {} int Cout () { cout &lt;&lt; &quot;Bool&quot;; ...

Обявление шаблонного класса - C++
Как-то с пониманием С++ вроде уже все норм, осталась только одна тема немного темная - шаблоны, вроде бы и понимаю как они работают да и...

Создание Шаблонного класса - C++
Здравствуйте! Столкнулся с проблемой создания шаблона для класса. Не могу понять как ввести более одного символа если объявляю шаблон для...

Реализация шаблонного класса - C++
List_Node.h: #ifndef _List_Node_H #define _List_Node_H template &lt;class Type&gt; class ListNode { public: Type...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DrOffset
7058 / 4199 / 949
Регистрация: 30.01.2014
Сообщений: 6,965
22.08.2014, 18:47     Ошибка определения специализации шаблонного класса #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от Unifan Посмотреть сообщение
На этом месте вылазит ошибка: Error 1 error C3413: 'MyClass<int>' : invalid explicit instantiation
C++
1
template <> class MyClass<int>
Unifan
0 / 0 / 0
Регистрация: 11.08.2014
Сообщений: 40
22.08.2014, 18:49  [ТС]     Ошибка определения специализации шаблонного класса #3
Между тем, если template убрать все начинает компилироваться. НО!!!!!!!!!!! Должно работать так, как заявлено у меня. Как минимум потому, что Шилдт это компилирует, или стандарты С++ подверглись модификациям?
DrOffset
7058 / 4199 / 949
Регистрация: 30.01.2014
Сообщений: 6,965
22.08.2014, 18:50     Ошибка определения специализации шаблонного класса #4
Цитата Сообщение от Unifan Посмотреть сообщение
Как минимум потому, что Шилдт это компилирует
Если в книжке без <>, то там просто опечатка.
Unifan
0 / 0 / 0
Регистрация: 11.08.2014
Сообщений: 40
22.08.2014, 18:52  [ТС]     Ошибка определения специализации шаблонного класса #5
DrOffset, то есть вы хотите сказать, что специализация шаблонной функции при ее объявлении должна объявляться примерно также? Ибо в книжке опечатка 4 раза получается. ( с учетом отдельно взятых предложений )
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.08.2014, 19:05     Ошибка определения специализации шаблонного класса
Еще ссылки по теме:

Инстанцирование шаблонного класса - C++
Уважаемые форумчане! Помогите в не сложном, как я полагаю, для Вас вопросе. Имеется шаблонный класс-контейнер оформленный в виде модуля...

Объявление шаблонного класса - C++
Как объявить шаблонный класс?

Специализация шаблонного класса - C++
Здравствуйте ! Задача: нужно &quot;вытянуть&quot; тип переменной из списка аргументов конструктора (см. текст). Возможно ли, вообще, такое ?...

Перегрузка << , >> для шаблонного класса - C++
Доброго времени суток всем! Данная тема не раз подымалась на форуме.. Но есть но.. Помогите перегрузить операторы побитового сдвига для...

Исключение в конструкторе шаблонного класса - C++
Добрый день! Пишу класс дробей и, соответственно, если пользователь введёт 0 в знаменатель с помощью оператора &gt;&gt; или с помощью...

Объявление и определение шаблонного класса - C++
Добрый вечер, мастера :) Почему данный код вызывает проблемы у компилятора? // class.h template &lt;typename T&gt; class Name { ...


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

Или воспользуйтесь поиском по форуму:
DrOffset
7058 / 4199 / 949
Регистрация: 30.01.2014
Сообщений: 6,965
22.08.2014, 19:05     Ошибка определения специализации шаблонного класса #6
Цитата Сообщение от Unifan Посмотреть сообщение
то есть вы хотите сказать, что специализация шаблонной функции при ее объявлении должна объявляться примерно также? Ибо в книжке опечатка 2 раза получается.
Книжка Шилдта знаменита своими неточностями.
Вот примеры.
C++
1
2
3
4
5
6
7
8
template <typename T>
class A {}; // основной шаблон
 
template <>
class A<int> {}; //полная специализация
 
template <typename B>
class A< std::vector<B> > {}; //частичная специализация
Добавлено через 5 минут
Цитата Сообщение от Unifan Посмотреть сообщение
специализация шаблонной функции
Для функции разрешена только полная специализация.
Вообще да, также.
C++
1
2
3
4
5
6
7
8
9
10
11
template <typename T>
void foo();
 
template <>
void foo<int>(); // специализация
 
template <typename T>
void foo(T a);
 
template <>
void foo(int a); // специализация
Yandex
Объявления
22.08.2014, 19:05     Ошибка определения специализации шаблонного класса
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru