обеспечивать для компилятора видимость конструктора шаблонного класса, пишу #include "class.cpp" в заголовке, уже после объявления.
Всё работает. Но насколько так делать правильно? Не видел никогда чтобы инклуды писали где-то кроме самого начала файла?
Пиши все в заголовке. Нельзя реализацию шаблона скрыть в cpp. На то это и шаблон.
можно инстанцировать с конкретным типом еще
Блин, видимо я пишу какую-то смесь шаблон-нешаблон. У меня почти все методы шаблона вынесены в cpp.
Да ну? И как полет? Все определения должны быть доступны компилятору в точке инстанцирования шаблона.
Как понять нельзя скрыть?
Вот так и понимай
скрыть от кого? Почему нельзя? Я ж, вроде, разделил, просто добавил инклуд
думаешь я тебе спецом бешу. Я туплю и не понимаю смысла. Это же чат для новичков
когда компилятор будет по шаблону строить конкретную реализацию, ему должны быть доступны все тела функций, если я правильно всё понимаю
Вообщем, не бузи, ты знаешь, что делать :) Переноси всю имплементацию в хидер и убирай эти инклюды CPP.
что скоыть? ты не тому ответил. Я сказал как тебе разделить. Еще вариант можешь засунуть определение в один хедер, а декларации в другой, и таким образом разделить
Бляяя... Напоролся на свои же аккуратно расставленные грабли. Анатолий, спасибо большое! Да, сейчас то все работает и компилит, так как у меня для теста все собирается в один исходник и компилится. Понятно, что в этом случае объявление шаблона и реализация его методов находятся в одной TU. Хорошо, что обнаружилось сейчас...
Обсуждают сегодня