powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Unix1
3 сообщений из 3, страница 1 из 1
Unix1
    #33068051
teamplate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Описываю шаблон в класе как public:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
class TClass1: public TFrame
{
private:	// User declarations
public:		// User declarations
	template <class TFrame> SwichRegim ();
}
extern TClass1 *Class1;

Пытаюсь вызвать тимплатовчкую функцию SwichRegim () из метода
другого класса

Код: plaintext
1.
2.
3.
4.
void __fastcall TClass2::spbMoreDetailClick(TObject *Sender)
{
	Class1->SwichRegim<TClass2 >();
}

Получаю ошибку линкера :
[Linker Error] Unresolved external 'int TClass1::SwichRegim<TClass2 >()' referenced from C:\PROJECTS\PERSONAL.OBJ

В чем тут может быть дело , и могут ли template описан в public ???
...
Рейтинг: 0 / 0
Unix1
    #33068099
Фотография Анатолий Широков
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Определение шаблона этой функции должно быть доступно в точке инстанцирования, то есть, в точке вызова, поэтому помести реализацию в тело класса:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
class TClass1: public TFrame
{
private:	// User declarations
public:		// User declarations
	template <class TFrame> SwichRegim ()
             {
                  ...
             }
};
 

Считай, что шаблон это макрос - проще будет въехать почему его тело должно быть доступно при подстановке конкретных параметров шаблона(инстанцирование).

Правда, есть компиляторы, которые поддерживают экпорт шаблонов, но это уже другая история.
...
Рейтинг: 0 / 0
Unix1
    #33068174
Template
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Анатолий Широков
Спасибо , помог ...
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Unix1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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