Войти
ФлеймФорумПрограммирование

Крестошаблоноболь.

Страницы: 1 2 3 4 5 6 7 Следующая »
#0
11:17, 23 ноя. 2018

Вайюсов.

Почему шаблоны пишут в хидерах, а весь остальной код в .cpp?
Почему тогда не писать все в долбаных хидерах, хоть какая-то согласованность бы была.
А так полнейший хаос.


#1
(Правка: 11:38) 11:30, 23 ноя. 2018

nes
> Почему шаблоны пишут в хидерах, а весь остальной код в .cpp?
Здрасте.

Потому, что шаблоны не компилируются напрямую, только после подстановки типов.

Если ты их поместишь .cpp, то не сможешь их использовать за пределами этого .cpp.

> Почему тогда не писать все в долбаных хидерах, хоть какая-то согласованность бы
> была.
Чтобы оптимизировать время компиляции. При изменении в .cpp перекомпилируется только измененный .cpp. При изменении в .h перекомпилируются все зависимые от него .cpp.

#2
11:37, 23 ноя. 2018

alexey.ch
Ну и кому оно такое нужно?

>Потому, что шаблоны не компилируются напрямую, только после подстановки типов.
Выглядит как костыль.

#3
(Правка: 11:44) 11:41, 23 ноя. 2018

nes
> Ну и кому оно такое нужно?
Всем, кто пишет на С++?

> Выглядит как костыль.
Ты наверно на шарпе писал до плюсов? В шарпе генерики - самостоятельный тип, который может быть скомпилирован, собран в библиотеку и повторно использован без доступа к исходному коду.

В плюсах все иначе. Рассматривай шаблоны как макросы с типизацией, так будет понятнее.

#4
11:43, 23 ноя. 2018

alexey.ch
>ы наверно на шарпе писал до плюсов?
Нет, я начинал с крестов, но до сих пор ниасилил.

>В плюсах все иначе. Рассматривай шаблоны как макросы с типизацией, так будет понятнее.
Просто очень сильно уродуют код эти шаблоны, а альтернатив в кресты не завезли.
Приходится плакать и продолжать давиться кактусом.

#5
(Правка: 11:55) 11:49, 23 ноя. 2018

nes
> Приходится плакать и продолжать давиться кактусом.
Привыкнешь :)

Я изучал плюсы, когда шаблонов еще не было. Все делалось на перегрузке функций и операторов. И макросами, конечно же.

Появление шаблонов для меня было настоящим откровением. Это возможность значительно экономить время и сократить объем кода.

> Нет, я начинал с крестов, но до сих пор ниасилил.
Изучи для начала шарп. Он легче в освоении и многое прощает.

#6
11:56, 23 ноя. 2018

alexey.ch
>Привыкнешь :)
11 лет уже прошло, думаешь еще есть шанс?

>Изучи для начала шарп. Он легче в освоении и многое прощает.
Шарп тоже использую, для всякой гуйни, тот, который версии 2.0.

#7
12:00, 23 ноя. 2018

alexey.ch
> Я начинал изучал плюсы, когда шаблонов еще не было.
  Там всегда были шаблоны. Они только благодаря им и появились.

#8
12:00, 23 ноя. 2018

nes
> 11 лет уже прошло, думаешь еще есть шанс?
Ох...

Бросай это дело. Это явно не твое :)

#9
12:04, 23 ноя. 2018

Zefick
> Там всегда были шаблоны. Они только благодаря им и появились.
оказывается нет, их только в 86 завезли

#10
12:06, 23 ноя. 2018

Экспорт шаблонов был, да сплыл

#11
12:06, 23 ноя. 2018

Кто-то разбивает код по файлам логически, а кто-то чтобы оптимизировать время компиляции.

#12
(Правка: 12:07) 12:06, 23 ноя. 2018

Zefick
> Там всегда были шаблоны.
Нет.

> Они только благодаря им и появились.
Плюсы появились благодаря классам и перегрузке функций.

#13
(Правка: 12:08) 12:08, 23 ноя. 2018
Adler
> оказывается нет, их только в 86 завезли
не думал что alexey.ch такой старик.
#14
12:14, 23 ноя. 2018

Пока до чего я дошел это создаю классы обертки, которые уже в сорцах юзают шаблонную имплементацию, т.е, например:

// vertex_array.h
class Vertex2Array
{
private:

  struct Vertex2ArrayImpl* impl;

public:

  Vertex2Array(int32 length, const Vertex2 vertices[]);
  ...
};
// vertex_array.cpp
#include "template_array.h"

Vertex2Array::Vertex2Array(int32 length, const Vertex2 vertices[])
{
  impl = Array<Vertex2>::Create(length, vertices);
}

Плюсы:
- чистый код, не тянущий шаблонщину в каждый хидер.

Минусы:
- Гораздо больше лишней писанины.

Страницы: 1 2 3 4 5 6 7 Следующая »
ФлеймФорумПрограммирование