Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

22.08.2014, 18:45. Просмотров 255. Ответов 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; }
};
ЧаВо делать?
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.08.2014, 18:45
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Ошибка определения специализации шаблонного класса (C++):

Как корректно передать в метод шаблонного класса объект шаблонного класса в качестве параметра? - C++
header.h template &lt;class T&gt; class MyVector { public: void swap(MyVector&lt;T&gt;Vector); } template &lt;class T&gt; void...

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

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

Возврат объекта шаблонного типа от типа Type из специализации шаблона метода от того же типа - C++
Доброго времени суток, пишу класс содержащий несколько std::set от разных типов, нужно сделать метод возвращающий указатель на нужное...

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

Возможно ли создание объекта шаблонного класса в функции этого класса? - C++
Доброго времени суток, уважаемые форумчане :) Мне по лабам задали задание - реализовать шаблон контейнера (множество) с операциями...

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

Чем отличается шаблонный метод класса от шаблонного класса? - 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++
Как объявить шаблонный класс?


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

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