LINUX.ORG.RU

Как в C++11 принято разделять реализацию и объявление шаблонных классов

 ,


0

5

В общем есть класс шаблонный у которого есть шаблонные методы, как можно реализовать разделение на .h и .cpp без вот таких вот костылей в cpp'шнике?

template class DataField<long>;
template class VariantsDataField<long>;
template VariantsDataField<long> VariantsDataField<long>::operator *<long>(VariantsDataField<long>);
template VariantsDataField<long> VariantsDataField<long>::operator /<long>(VariantsDataField<long>);
?

★★★★★
Ответ на: комментарий от Pavval

Нет, ну реально никак?
А как быть допустим, если я хочу либу сделать и при этом не хочу вот так писать?
Допустим я все в заголовочник помещу, но не хочу все показывать посторонним людям. Можно ли сделать вариант заголовочника для остальных(без кода) или не прокатит? Что-то у меня уже от этой магии все перемешалось.

deterok ★★★★★
() автор топика
Ответ на: комментарий от deterok

Нет, ну реально никак?

Реально. Было для этого ключевое слово export, которое гордо поддерживал только один компилятор. И в С++11 оно уже убрано (именно потому, что никто не хотел реализовывать по техническим причинам).

А как быть допустим, если я хочу либу сделать и при этом не хочу вот так писать?

Объединяйся с хотящими секса без обязательств и подобными.

Допустим я все в заголовочник помещу, но не хочу все показывать посторонним людям.

Если есть, что выделить в типонезависимый базовый класс (не шаблонный) - выделяй и прячь. Иначе никак.

Можно ли сделать вариант заголовочника для остальных(без кода) или не прокатит?

Нет. Как они тогда инстанциируют код, которого у них нет?

Pavval ★★★★★
()
Последнее исправление: Pavval (всего исправлений: 1)
Ответ на: комментарий от deterok

не хочу все показывать посторонним людям

а RMS завещал делиться!

jtootf ★★★★★
()
Ответ на: комментарий от Pavval

Было для этого ключевое слово export, которое гордо поддерживал только один компилятор.

Нихрена он, на самом деле, не поддерживал. Всё равно при использовании этого шаблонного класса все соответствующие исходники должны были быть доступны.

Miguel ★★★★★
()
Ответ на: комментарий от deterok

Ты вообще не понимаешь, что такое шаблоны, да?

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.