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

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

Восстановить пароль Регистрация
 
orange_fox
 Аватар для orange_fox
34 / 34 / 6
Регистрация: 06.04.2014
Сообщений: 189
12.07.2014, 23:15     Реализация шаблонов класса в инлайн файле #1
Пытался написать шаблонны

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:15     Реализация шаблонов класса в инлайн файле
Посмотрите здесь:

C++ Реализация класса
C++ реализация класса
C++ Реализация класса
C++ Реализация класса в отдельном файле
C++ реализация класса в .h файле хорошо или плохо?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт C++
6543 / 3963 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
13.07.2014, 01:51     Реализация шаблонов класса в инлайн файле #2
ну пытался, и чё?

Добавлено через 1 минуту
Цитата Сообщение от orange_fox Посмотреть сообщение
MyClass.cpp
расширение cpp вводит в заблуждение

Добавлено через 1 минуту
да и раз уж выносишь за пределы класса то реализации должны быть inline
DrOffset
6456 / 3830 / 885
Регистрация: 30.01.2014
Сообщений: 6,626
13.07.2014, 04:09     Реализация шаблонов класса в инлайн файле #3
orange_fox, да такой подход иногда используется, но здесь явно лучше применить не cpp-файлы, а что-нибудь вроде *.timpl или *.hpp, или *.himpl.
А если у тебя этот твой cpp был добавлен в проект (или в makefile), то он будет пытаться скомпилироваться два раза. Один раз в составе main.cpp в качестве include, другой раз как самостоятельная единица трансляции, в итоге все развалится. В общем это действительно путает.
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
13.07.2014, 09:40     Реализация шаблонов класса в инлайн файле #4
DrOffset, всегда считал, что hpp это логическое продолжение h на c++ и не более того. Разве принято использовать hpp как показатель наличия шаблонного кода?
DrOffset
6456 / 3830 / 885
Регистрация: 30.01.2014
Сообщений: 6,626
13.07.2014, 15:26     Реализация шаблонов класса в инлайн файле #5
Tulosba, ну я встречал такое в паре проектов. Логика только немного другая: в h лежат обычные, привычные заголовочные файлы, а в hpp вынесена inline реализация (не только шаблонная, вся). Это в любом случае лучше, чем использовать для это cpp. У нас, например, принято использовать для таких случаев просто расширение *.impl. Хотя почти никто этим не пользуется, делают все в одном файле, по-старинке .
orange_fox
 Аватар для orange_fox
34 / 34 / 6
Регистрация: 06.04.2014
Сообщений: 189
14.07.2014, 15:14  [ТС]     Реализация шаблонов класса в инлайн файле #6
Цитата Сообщение от Jupiter Посмотреть сообщение
да и раз уж выносишь за пределы класса то реализации должны быть inline
Туплю. Приведи пример, пожалуйста)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.07.2014, 01:38     Реализация шаблонов класса в инлайн файле
Еще ссылки по теме:

C++ Реализация шаблонов класса в инлайн файле
Утилизация класса (размещение класса в другом файле) C++
C++ Переписать с использованием шаблонов программу поиска заданного слова в файле

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

Или воспользуйтесь поиском по форуму:
Jupiter
Каратель
Эксперт C++
6543 / 3963 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
16.07.2014, 01:38     Реализация шаблонов класса в инлайн файле #7
C++
1
2
3
4
5
template<class T>
inline MyClass<T>::MyClass(const T& value)
{
    std::cout << value << '\n';
}

Не по теме:

Цитата Сообщение от orange_fox Посмотреть сообщение
Туплю. Приведи пример, пожалуйста)
не тупишь, а выделываешься. пиши все внутри класса

Yandex
Объявления
16.07.2014, 01:38     Реализация шаблонов класса в инлайн файле
Ответ Создать тему
Опции темы

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