|
|
|
Шаблоны
|
|||
|---|---|---|---|
|
#18+
Здравствуйте. В проекте 2 файла. Главный и реализация класса List (описано в list.h) Почему при компиляции list.cpp не генерируется код для шаблонов? ИДЕ явно показывает что кода 0 байт. Естественно MAKE выдает ошибку.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2007, 12:23 |
|
||
|
Шаблоны
|
|||
|---|---|---|---|
|
#18+
xdfЗдравствуйте. В проекте 2 файла. Главный и реализация класса List (описано в list.h) Почему при компиляции list.cpp не генерируется код для шаблонов? ИДЕ явно показывает что кода 0 байт. Естественно MAKE выдает ошибку.... Код будет генериться, если шаблоны будут использоваться. При компиляции файла list.cpp они не используются. Шаблоны введены для того, чтобы из некого правила построить функцию. Это правило имеет параметры - типы. Так как в list.cpp эти правила не используются, то и функции (классы) не генерятся. Было бы странно, если бы эти функции (классы) генерились не зная, для каких параметров (типов) их строить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2007, 12:26 |
|
||
|
Шаблоны
|
|||
|---|---|---|---|
|
#18+
Дак я их использую в главном файле..... Если я вс понял то нужно использовать шаблоны в том же модуле где код шаблонных функций? А как же идея модульного программирования? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2007, 12:43 |
|
||
|
Шаблоны
|
|||
|---|---|---|---|
|
#18+
xdfДак я их использую в главном файле..... Если я вс понял то нужно использовать шаблоны в том же модуле где код шаблонных функций? А как же идея модульного программирования? Нужно писать реализацию в заголовочном файле ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2007, 12:52 |
|
||
|
Шаблоны
|
|||
|---|---|---|---|
|
#18+
Кх...ясно... некрасиво както.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2007, 13:08 |
|
||
|
Шаблоны
|
|||
|---|---|---|---|
|
#18+
еще интереснее... написал реализацию в заголовке, а он мне все равно linker error... ??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2007, 13:54 |
|
||
|
Шаблоны
|
|||
|---|---|---|---|
|
#18+
написал реализацию в заголовке, а он мне все равно linker error... 1) приведите пример кода, а то отсюда не видно нихрена.. 2) под каким компайлером работаете? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2007, 14:09 |
|
||
|
Шаблоны
|
|||
|---|---|---|---|
|
#18+
// File LIST.h #ifndef _list_h #define _list_h template <class T> ListItem { public: T item; ListItem<T> *next; ListItem<T> *prev; }; template <class T> List { ListItem<T> curr; ListItem<T> last; ListItem<T> items; public: List() { curr=last=items=0; }; void Add (T item) { /* code for add */ }; T& operator()() { if (items) return curr->item; }; ~List() {}; }; #endif // File list_ex.cpp #include <list.h> int main(void) { List<int> int_list; int_list.Add(4); int_list.Add(5); int h = int_list(); }; // linker error ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2007, 12:38 |
|
||
|
Шаблоны
|
|||
|---|---|---|---|
|
#18+
в классе List там где члены описаны стоят *, торопился..ошибся ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2007, 12:49 |
|
||
|
Шаблоны
|
|||
|---|---|---|---|
|
#18+
Вообще не понятно как компилятор пропустил // File LIST.h Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2007, 12:49 |
|
||
|
Шаблоны
|
|||
|---|---|---|---|
|
#18+
там звездочки стоят....торопился ошибся... не суть что в Add() (хоть пусто ) и вернет ли operator()... главное почему linker error... ??? компилируется ведь нормально...врать не буду ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2007, 12:52 |
|
||
|
Шаблоны
|
|||
|---|---|---|---|
|
#18+
использую Borland C++ 3.1 когда не шаблонные классы то порядок.... пробовал #pragma option -Jgd если это могло помочь, но не помогло.... linker error... undefined symbol in module list_ex: list::list() undefined symbol in module list_ex: list::add() undefined symbol in module list_ex: list::operator() undefined symbol in module list_ex: list::~list() ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2007, 13:04 |
|
||
|
Шаблоны
|
|||
|---|---|---|---|
|
#18+
использую Borland C++ 3.1 а может пора переходить на современные компиляторы, более-менее соответствующие текущему стандарту языка? чем мозг парить себе и окружающим ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2007, 13:08 |
|
||
|
Шаблоны
|
|||
|---|---|---|---|
|
#18+
ах да, обратите внимание на то что вы инклудите: Код: plaintext 1. 2. скорей всего включается одноименный системный хедер, а нужен локальный: Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2007, 13:23 |
|
||
|
Шаблоны
|
|||
|---|---|---|---|
|
#18+
смех , это к постеру о компиляторе... а в BC 3.1 нет list.h в исходниках....смотрел, так что с этим все нормально должно быть ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2007, 13:31 |
|
||
|
Шаблоны
|
|||
|---|---|---|---|
|
#18+
ладно, если вам неохота морочится, от VC все работает... вопрос уже к борланду получается..... просто становится интересно... а если кто то под ДОС прогает шаблоны.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2007, 13:33 |
|
||
|
Шаблоны
|
|||
|---|---|---|---|
|
#18+
а в BC 3.1 нет list.h в исходниках....смотрел, так что с этим все нормально должно быть есть, см. bc31\CLASSLIB\INCLUDE\ а пример скомпилился, правда с ожидаемыми ворнингами ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2007, 13:40 |
|
||
|
Шаблоны
|
|||
|---|---|---|---|
|
#18+
в теме указано что не линкуется.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2007, 13:53 |
|
||
|
Шаблоны
|
|||
|---|---|---|---|
|
#18+
в теме указано что не линкуется.... что с чем линкуете? я этот пример под дебагом прогнал, все OK ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2007, 14:00 |
|
||
|
Шаблоны
|
|||
|---|---|---|---|
|
#18+
может вышлете мне ваш BC :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2007, 14:04 |
|
||
|
Шаблоны
|
|||
|---|---|---|---|
|
#18+
xdfв теме указано что не линкуется.... шаблоны должны истанцироваться в модуль, который их использует. Что вы пытаетесь линковать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2007, 14:16 |
|
||
|
Шаблоны
|
|||
|---|---|---|---|
|
#18+
может вышлете мне ваш BC :) *с сомнением* 5,5Mb в архиве на мыло? ну можно попытаться.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2007, 14:30 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=34532696&tid=2028859]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
180ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
| others: | 244ms |
| total: | 509ms |

| 0 / 0 |
