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

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

Восстановить пароль Регистрация
 
orange_fox
 Аватар для orange_fox
34 / 34 / 6
Регистрация: 06.04.2014
Сообщений: 189
12.07.2014, 23:41     Реализация шаблонов класса в инлайн файле #1
Пытался написать шаблонный класс, реализуя как обычно объявление класса в 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++ Реализация класса
C++ реализация класса
C++ Реализация класса
Реализация класса C++
C++ Реализация класса в отдельном файле
C++ реализация класса в .h файле хорошо или плохо?
Реализация шаблонов класса в инлайн файле C++
Утилизация класса (размещение класса в другом файле) C++
C++ Переписать с использованием шаблонов программу поиска заданного слова в файле
Реализация шаблонов C++
C++ Специализации шаблонов класса
Реализация шаблонов underline_type и is_enum C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
12079 / 6940 / 782
Регистрация: 27.09.2012
Сообщений: 17,215
Записей в блоге: 2
Завершенные тесты: 1
12.07.2014, 23:44     Реализация шаблонов класса в инлайн файле #2
Цитата Сообщение от orange_fox Посмотреть сообщение
Есть ли способ попроще?
писать всё в объявлении или в том же заголовочном файле.
orange_fox
 Аватар для orange_fox
34 / 34 / 6
Регистрация: 06.04.2014
Сообщений: 189
13.07.2014, 00:00  [ТС]     Реализация шаблонов класса в инлайн файле #3
Croessmah, А как же отделение интерфейса от реализации и прочие прелести?
Без #define-ов никак не справиться?
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
12079 / 6940 / 782
Регистрация: 27.09.2012
Сообщений: 17,215
Записей в блоге: 2
Завершенные тесты: 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     Реализация шаблонов класса в инлайн файле
Ответ Создать тему
Опции темы

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