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

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

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

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

12.07.2014, 23:15. Просмотров 435. Ответов 6
Метки нет (Все метки)

Пытался написать шаблонны

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

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

Реализация класса в отдельном файле - 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++
Из книги Просьба пример показать. А-то не очень понятно. Как-то очень обобщенно.

6
Jupiter
Каратель
Эксперт С++
6561 / 3982 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
13.07.2014, 01:51 #2
ну пытался, и чё?

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

Добавлено через 1 минуту
да и раз уж выносишь за пределы класса то реализации должны быть inline
0
DrOffset
7377 / 4454 / 1009
Регистрация: 30.01.2014
Сообщений: 7,304
13.07.2014, 04:09 #3
orange_fox, да такой подход иногда используется, но здесь явно лучше применить не cpp-файлы, а что-нибудь вроде *.timpl или *.hpp, или *.himpl.
А если у тебя этот твой cpp был добавлен в проект (или в makefile), то он будет пытаться скомпилироваться два раза. Один раз в составе main.cpp в качестве include, другой раз как самостоятельная единица трансляции, в итоге все развалится. В общем это действительно путает.
0
Tulosba
:)
Эксперт С++
4397 / 3233 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
13.07.2014, 09:40 #4
DrOffset, всегда считал, что hpp это логическое продолжение h на c++ и не более того. Разве принято использовать hpp как показатель наличия шаблонного кода?
0
DrOffset
7377 / 4454 / 1009
Регистрация: 30.01.2014
Сообщений: 7,304
13.07.2014, 15:26 #5
Tulosba, ну я встречал такое в паре проектов. Логика только немного другая: в h лежат обычные, привычные заголовочные файлы, а в hpp вынесена inline реализация (не только шаблонная, вся). Это в любом случае лучше, чем использовать для это cpp. У нас, например, принято использовать для таких случаев просто расширение *.impl. Хотя почти никто этим не пользуется, делают все в одном файле, по-старинке .
0
orange_fox
34 / 34 / 6
Регистрация: 06.04.2014
Сообщений: 189
14.07.2014, 15:14  [ТС] #6
Цитата Сообщение от Jupiter Посмотреть сообщение
да и раз уж выносишь за пределы класса то реализации должны быть inline
Туплю. Приведи пример, пожалуйста)
0
Jupiter
Каратель
Эксперт С++
6561 / 3982 / 227
Регистрация: 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 Посмотреть сообщение
Туплю. Приведи пример, пожалуйста)
не тупишь, а выделываешься. пиши все внутри класса

0
16.07.2014, 01:38
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.07.2014, 01:38
Привет! Вот еще темы с ответами:

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

Реализация класса на базе класса Stack с возможностью !индексирования! - C++
Помогите пожалуйста!!! Нужно реализовать на базе класса stack другой класс с возможностью индексирования, а именно: Например 1 - й...

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

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


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

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

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