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

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

Войти
Регистрация
Восстановить пароль
 
orange_fox
34 / 34 / 6
Регистрация: 06.04.2014
Сообщений: 189
#1

Реализация шаблонов класса в инлайн файле - C++

12.07.2014, 23:41. Просмотров 259. Ответов 3
Метки нет (Все метки)

Пытался написать шаблонный класс, реализуя как обычно объявление класса в h файле и определение элемент-функций в с++. Компилятор постоянно плевался в меня ошибкой линковщика, а я всё никак не мог понять в чём дело. Много гуглил, пока не наткнулся на это сообщение:
Цитата Сообщение от DU Посмотреть сообщение
100500 раз в 100500 местах написано, что шаблоны надо реализовывать не в сpp файлах, а в h файлах или в инлайн файлах. в конце вашего Vector.h напишите #include "Vector.cpp" - это как реализация в инлайн файлах. только не забыть в этом случае из Vector.cpp удалить строку #include "Vector.h"
Сделал, как писал человек выше, но компилятор(msvs2013) ругался на то, что не видит MyClass. Поэтому сделал чуть по другому и всё заработало. Есть ли способ попроще?

MyClass.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
#pragma once
#define MYCLASS
template <typename T>
class MyClass
{
public:
    MyClass(const T&);
private:
    T data;
};
 
#include "MyClass.cpp"
MyClass.cpp
C++
1
2
3
4
5
6
7
#ifdef MYCLASS
template <typename T>
MyClass<T>::MyClass(const T& value)
{
    data = value;
}
#endif
main.cpp
C++
1
2
3
4
5
6
#include "MyClass.h"
int main()
{
    MyClass<int> A(34);
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.07.2014, 23:41     Реализация шаблонов класса в инлайн файле
Посмотрите здесь:

Реализация шаблонов класса в инлайн файле - C++
Пытался написать шаблонны MyClass.h #pragma once #define MYCLASS template &lt;typename T&gt; class MyClass { public:

Реализация класса в отдельном файле - C++
Изучаю C++ (вернее только начал) по учебнику &quot;Харви М. Дейтел, Пол Дж. Дейтел - Как программировать на C++&quot; и застрял на создании классов в...

реализация класса в .h файле хорошо или плохо? - C++
все знакомые мне ide разделяют класс на два файла: .h с описанием и .cpp с кодом, но, например, в boost .hpp файлы почти всегда содержат и...

Реализация шаблонов - C++
Всем привет! Можно ли как-то реализовывать шаблонный класс в другом файле? то есть имеем заголовочный файл там задаём сам шаблонный класс...

Реализация шаблонов underline_type и is_enum - C++
Добрый вечер! Кто подскажет, как сделать шаблоны underline_type и is_enum? Смотрел type_traits, там используется, например, некая...

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

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт CЭксперт С++
13054 / 7317 / 815
Регистрация: 27.09.2012
Сообщений: 18,053
Записей в блоге: 3
Завершенные тесты: 1
12.07.2014, 23:44     Реализация шаблонов класса в инлайн файле #2
Цитата Сообщение от orange_fox Посмотреть сообщение
Есть ли способ попроще?
писать всё в объявлении или в том же заголовочном файле.
orange_fox
34 / 34 / 6
Регистрация: 06.04.2014
Сообщений: 189
13.07.2014, 00:00  [ТС]     Реализация шаблонов класса в инлайн файле #3
Croessmah, А как же отделение интерфейса от реализации и прочие прелести?
Без #define-ов никак не справиться?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.07.2014, 00:05     Реализация шаблонов класса в инлайн файле
Еще ссылки по теме:

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

Утилизация класса (размещение класса в другом файле) - C++
Здравствуйте уважаемые пользователи данного форума,прошу Вас помочь в решение данной проблемы.Пожалуйста подскажите как утилизировать...

Реализация Поиска В Файле - C++
Здравствуйте! В книге Лафоре по ООП на С++ есть задача, реализовать в программе приведенной в главе ( ее я собственно привожу ниже, правда...

Реализация класса С++ (плагин) - C++
Хорошего всем дня. Столкнулся с проблемой: Нужно написать плагин для существующей программы, исходного кода к ней нет. Из программы...


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

Или воспользуйтесь поиском по форуму:
Croessmah
Модератор
Эксперт CЭксперт С++
13054 / 7317 / 815
Регистрация: 27.09.2012
Сообщений: 18,053
Записей в блоге: 3
Завершенные тесты: 1
13.07.2014, 00:05     Реализация шаблонов класса в инлайн файле #4
Цитата Сообщение от orange_fox Посмотреть сообщение
А как же отделение интерфейса от реализации и прочие прелести?
ну так сначала напишите объявления, в конце файла - реализацию
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#pragma once
template <typename T>
class MyClass
{
public:
    MyClass(const T&);
private:
    T data;
};
 
template <typename T>
MyClass<T>::MyClass(const T& value)
{
    data = value;
}
Yandex
Объявления
13.07.2014, 00:05     Реализация шаблонов класса в инлайн файле
Ответ Создать тему
Опции темы

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