|
|
|
шаблонная ф-ия
|
|||
|---|---|---|---|
|
#18+
Как правильно отделить в шаблонной ф-ии объявление от реализации, так не понимает: Код: plaintext 1. 2. 3. 4. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2007, 10:16:02 |
|
||
|
шаблонная ф-ия
|
|||
|---|---|---|---|
|
#18+
Должно. Дай угадаю - ругается линкер, верно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2007, 10:22:05 |
|
||
|
шаблонная ф-ия
|
|||
|---|---|---|---|
|
#18+
И не поймет, все только в h? иначе невозможно инстанциирование ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2007, 10:22:30 |
|
||
|
шаблонная ф-ия
|
|||
|---|---|---|---|
|
#18+
AkhДолжно. Дай угадаю - ругается линкер, верно? верно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2007, 10:23:55 |
|
||
|
шаблонная ф-ия
|
|||
|---|---|---|---|
|
#18+
Tubrik AkhДолжно. Дай угадаю - ругается линкер, верно? верно тода смотри ответ blinded. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2007, 10:27:33 |
|
||
|
шаблонная ф-ия
|
|||
|---|---|---|---|
|
#18+
т.е. разделять их нельзя никак? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2007, 10:34:25 |
|
||
|
шаблонная ф-ия
|
|||
|---|---|---|---|
|
#18+
Это зависит от реализации компилятора.... Есть в которых можно, а есть в которых нельзя. Читать http://gcc.gnu.org/onlinedocs/gcc-4.1.1/gcc/Template-Instantiation.html]здесь[/url ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2007, 10:43:13 |
|
||
|
шаблонная ф-ия
|
|||
|---|---|---|---|
|
#18+
сделал так: 1. Удалил файл .cpp из проекта, но оставил физически. 2. Вконце файла .h сынклудил .cpp по сути тоже самое, но все же больше напоминает раздельное объявление что интересно, объявленная вместе с телом ф-ия в .h собирается нормально, но только если она шаблонная ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2007, 10:44:50 |
|
||
|
шаблонная ф-ия
|
|||
|---|---|---|---|
|
#18+
Tubrikт.е. разделять их нельзя никак? реализации шаблонов в объектный файл не включаются - это не функции, а некий прототип. В объектные файлы включаются их частные инстанцированные варианты. Сколько различных версий ты инстанцируешь, для int, для double, для MyBiGSuperPuperClassForever, столько их и включиться. Как компилятор в твоем случае может догадаться, что нужно скомпилировать реализацию шаблона для типа, который ты будешь использовать. Ответ - никак. Следовательно, надо включать реализацию шаблона в код, который его использует. Т.о. будет происходить автоматическое инстанцирование. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2007, 10:48:08 |
|
||
|
шаблонная ф-ия
|
|||
|---|---|---|---|
|
#18+
Tubrikчто интересно, объявленная вместе с телом ф-ия в .h собирается нормально, но только если она шаблонная Инстанцировнные функции в объектном файле имеют "слабое" связывание, в отличии от обычных, поэтому, линковщик и не ругается, а выбирает, ту, которую на душу положит. Можно конечно, предположить, что он для модуля будет давать больше приоритет функции, которая находиться в этом же модуле, но рисковать не стоит. Я взял за правило иметь одну реализацию в проете, т.е. реализацию шаблонной функции помещать в заголовочный файл (вариант, как ты инклудишь сpp с реализаций). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2007, 10:51:50 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=34934415&tid=2027823]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
199ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
64ms |
get tp. blocked users: |
1ms |
| others: | 205ms |
| total: | 512ms |

| 0 / 0 |
