powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Шаблоны
25 сообщений из 25, страница 1 из 1
Шаблоны
    #34528792
xdf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
xdf
Гость
Здравствуйте.
В проекте 2 файла. Главный и реализация класса List (описано в list.h)
Почему при компиляции list.cpp не генерируется код для шаблонов?
ИДЕ явно показывает что кода 0 байт.
Естественно MAKE выдает ошибку....
...
Рейтинг: 0 / 0
Шаблоны
    #34528813
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xdfЗдравствуйте.
В проекте 2 файла. Главный и реализация класса List (описано в list.h)
Почему при компиляции list.cpp не генерируется код для шаблонов?
ИДЕ явно показывает что кода 0 байт.
Естественно MAKE выдает ошибку....

Код будет генериться, если шаблоны будут использоваться. При компиляции файла list.cpp они не используются.

Шаблоны введены для того, чтобы из некого правила построить функцию. Это правило имеет параметры - типы. Так как в list.cpp эти правила не используются, то и функции (классы) не генерятся. Было бы странно, если бы эти функции (классы) генерились не зная, для каких параметров (типов) их строить.
...
Рейтинг: 0 / 0
Шаблоны
    #34528914
xdf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
xdf
Гость
Дак я их использую в главном файле.....

Если я вс понял то нужно использовать шаблоны
в том же модуле где код шаблонных функций?

А как же идея модульного программирования?
...
Рейтинг: 0 / 0
Шаблоны
    #34528944
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xdfДак я их использую в главном файле.....

Если я вс понял то нужно использовать шаблоны
в том же модуле где код шаблонных функций?

А как же идея модульного программирования?

Нужно писать реализацию в заголовочном файле
...
Рейтинг: 0 / 0
Шаблоны
    #34529002
xdf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
xdf
Гость
Кх...ясно...

некрасиво както....
...
Рейтинг: 0 / 0
Шаблоны
    #34529179
xdf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
xdf
Гость
еще интереснее...

написал реализацию в заголовке, а он мне все равно linker error...

???
...
Рейтинг: 0 / 0
Шаблоны
    #34529240
написал реализацию в заголовке, а он мне все равно linker error...

1) приведите пример кода, а то отсюда не видно нихрена..
2) под каким компайлером работаете?
...
Рейтинг: 0 / 0
Шаблоны
    #34532069
xdf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
xdf
Гость
// 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
...
Рейтинг: 0 / 0
Шаблоны
    #34532132
xdf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
xdf
Гость
в классе List там где члены описаны стоят *, торопился..ошибся
...
Рейтинг: 0 / 0
Шаблоны
    #34532133
Фотография blinded
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще не понятно как компилятор пропустил
// 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.
#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();
};
...
Рейтинг: 0 / 0
Шаблоны
    #34532159
xdf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
xdf
Гость
там звездочки стоят....торопился ошибся...

не суть что в Add() (хоть пусто ) и вернет ли operator()... главное почему linker error... ???
компилируется ведь нормально...врать не буду
...
Рейтинг: 0 / 0
Шаблоны
    #34532218
xdf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
xdf
Гость
использую 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()
...
Рейтинг: 0 / 0
Шаблоны
    #34532237
использую Borland C++ 3.1

а может пора переходить на современные компиляторы, более-менее соответствующие текущему стандарту языка?

чем мозг парить себе и окружающим
...
Рейтинг: 0 / 0
Шаблоны
    #34532302
ах да, обратите внимание на то что вы инклудите:

Код: plaintext
1.
2.
// File list_ex.cpp
#include <list.h>

скорей всего включается одноименный системный хедер, а нужен локальный:

Код: plaintext
1.
#include "list.h"
...
Рейтинг: 0 / 0
Шаблоны
    #34532320
xdf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
xdf
Гость
самый простой ответ
...
Рейтинг: 0 / 0
Шаблоны
    #34532354
xdf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
xdf
Гость
смех , это к постеру о компиляторе...

а в BC 3.1 нет list.h в исходниках....смотрел, так что с этим все нормально должно быть
...
Рейтинг: 0 / 0
Шаблоны
    #34532362
xdf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
xdf
Гость
ладно, если вам неохота морочится, от VC все работает...
вопрос уже к борланду получается..... просто становится интересно... а если кто то под ДОС прогает шаблоны....
...
Рейтинг: 0 / 0
Шаблоны
    #34532393
а в BC 3.1 нет list.h в исходниках....смотрел, так что с этим все нормально должно быть

есть, см. bc31\CLASSLIB\INCLUDE\

а пример скомпилился, правда с ожидаемыми ворнингами
...
Рейтинг: 0 / 0
Шаблоны
    #34532451
xdf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
xdf
Гость
в теме указано что не линкуется....
...
Рейтинг: 0 / 0
Шаблоны
    #34532488
в теме указано что не линкуется....

что с чем линкуете?
я этот пример под дебагом прогнал, все OK
...
Рейтинг: 0 / 0
Шаблоны
    #34532499
xdf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
xdf
Гость
жму Alt_C / Link
или Make
...
Рейтинг: 0 / 0
Шаблоны
    #34532510
xdf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
xdf
Гость
может вышлете мне ваш BC :)
...
Рейтинг: 0 / 0
Шаблоны
    #34532584
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xdfв теме указано что не линкуется....

шаблоны должны истанцироваться в модуль, который их использует. Что вы пытаетесь линковать?
...
Рейтинг: 0 / 0
Шаблоны
    #34532650
может вышлете мне ваш BC :)

*с сомнением*
5,5Mb в архиве на мыло? ну можно попытаться..
...
Рейтинг: 0 / 0
Шаблоны
    #34532696
xdf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
xdf
Гость
а строчки #include "list.h" не достаточно?
если нет, то почему?
...
Рейтинг: 0 / 0
25 сообщений из 25, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Шаблоны
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]