Перейти к содержанию
    

Не могу добавить шаблонный метод, STM32F3DISCOVERY

Всем привет! Работаю в STM32CubeIDE 1.9.0. Пытаюсь добавить шаблонный метод в класс. Код предварительно проверен в Visual Studio 2022, работает.

class __AD9954__
{
	public:
		__AD9954__();
		//~__AD9954__();
		
		void write(void *reg);
		void read(void *reg);
		void AD_UPDATE(void);

		template <typename T>
		void test(T *reg);

	private:
template <typename T>
void __AD9954__::test(T *reg)
{

}

При попытке вызвать метод из основной программы получаю ошибку...

/* USER CODE BEGIN 2 */

  __AD9954__ *AD9954 = new __AD9954__();
  __CFR1__ *CFR1 = new __CFR1__();

  AD9954->test(CFR1);
main.cpp:104: undefined reference to `void __AD9954__::test<__CFR1__>(__CFR1__*)'

Помогите разобраться с проблемой. Стандарт С++ 14.

Изменено пользователем Сёха

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

26 минут назад, Сёха сказал:
class __AD9954__
{
	public:
		__AD9954__();
		//~__AD9954__();
		
		void write(void *reg);
		void read(void *reg);
		void AD_UPDATE(void);

		template <typename T>
		void test(T *reg);

	private:
template <typename T>
void __AD9954__::test(T *reg)
{

}

Это все в одном файле находится?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот поэтому и не компилится. В момент инстанцирования компилятор должен видеть реализацию шаблона, она должна быть в заголовочном файле.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...