170 похожих чатов

Пишу шаблонные классы: в заголовке объявляю, в cpp определяю. Т.к. приходится

обеспечивать для компилятора видимость конструктора шаблонного класса, пишу #include "class.cpp" в заголовке, уже после объявления.
Всё работает. Но насколько так делать правильно? Не видел никогда чтобы инклуды писали где-то кроме самого начала файла?

15 ответов

6 просмотров

Пиши все в заголовке. Нельзя реализацию шаблона скрыть в cpp. На то это и шаблон.

можно инстанцировать с конкретным типом еще

Anatoly Shirokov
Пиши все в заголовке. Нельзя реализацию шаблона ск...

Блин, видимо я пишу какую-то смесь шаблон-нешаблон. У меня почти все методы шаблона вынесены в cpp.

d7d1cd
Блин, видимо я пишу какую-то смесь шаблон-нешаблон...

Да ну? И как полет? Все определения должны быть доступны компилятору в точке инстанцирования шаблона.

Виктор-Nekrasov Автор вопроса
Pepe 🐸
можно инстанцировать с конкретным типом еще

скрыть от кого? Почему нельзя? Я ж, вроде, разделил, просто добавил инклуд

Виктор-Nekrasov Автор вопроса
Anatoly Shirokov
Не беси

думаешь я тебе спецом бешу. Я туплю и не понимаю смысла. Это же чат для новичков

Виктор Nekrasov
Как понять нельзя скрыть?

когда компилятор будет по шаблону строить конкретную реализацию, ему должны быть доступны все тела функций, если я правильно всё понимаю

Виктор Nekrasov
думаешь я тебе спецом бешу. Я туплю и не понимаю с...

Вообщем, не бузи, ты знаешь, что делать :) Переноси всю имплементацию в хидер и убирай эти инклюды CPP.

Виктор Nekrasov
скрыть от кого? Почему нельзя? Я ж, вроде, раздели...

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

Anatoly Shirokov
Да ну? И как полет? Все определения должны быть до...

Бляяя... Напоролся на свои же аккуратно расставленные грабли. Анатолий, спасибо большое! Да, сейчас то все работает и компилит, так как у меня для теста все собирается в один исходник и компилится. Понятно, что в этом случае объявление шаблона и реализация его методов находятся в одной TU. Хорошо, что обнаружилось сейчас...

Похожие вопросы

Обсуждают сегодня

я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
80
читать файл максимально быстро? странный вопрос))
zamtmn
53
How to create an OS in C? what to study?
Linus
18
Всем доброго вечера! Хочу поделиться своим злоключением с человеком, который, как оказалось сюда тоже скидывал свое резюме. Жаль, что я вашу группу не нашел раньше… человек ки...
Роман Ахмедзянов
4
тоесть, указав return eax, сгенерируется никому ненужная инструкция mov eax,eax ?
Aiwan \ (•◡•) / _bot
24
Компания Elif ищет менеджера проектов, который будет заниматься поиском и ведением новых проектов. Прежде чем приступить к работе, вам нужно пройти наш недельный курс, где вы ...
Elif
5
Привет, кто может сделать юзербота с апи? Задачи: - создавать группы - создавать каналы - задавать для созданных каналов аватарку или эмоджи, имя группы - добавлять в группы...
Lencore
11
Вопрос вроде правильно, но что надо сделать, чтоб текст был виден нормально ? ghci> TE.decodeUtf8 $ TE.encodeUtf8 "test - проба" "test - \1087\1088\1086\1073\1072"
Fedor
7
а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
@HemulGM Параметры у AddStream поменялись? Несостыковка какая-то
Катерина Свиридова
12
Карта сайта