если я определю заголовок нешаблонном класс в test.h и поместить определения функций в отдельный test.cpp Хорошо
но если я определю заголовок шаблон класс в test.h и поместил определения функций в отдельный test.cpp я получил эту ошибку:
Ошибка: L6218E: Неопределенный символ test :: test (без знака) (по ссылке из main.o).
Что ж, странно, если я выложу функцию таким же образом из класса, но в файле test.h все работает !!!.
В чем проблема? То, что при вставке функций и других файлов компоновщик их не видит.
Я использую команды компилятора —C99 —cpp
я использую keil IDE и stm32f407
test.h:
-------
template <class T>
class test
{
public:
T * Pointer;
protected:
int * test_count;
public:
test(unsigned int n);
~test();
};
test.cpp:
---------
#include "test.h"
template<class T>
test<T>::test( unsigned int n)
{ My Code..
}
template<class T>
test<T>::~test()
{ My Code...
}
Main.cpp:
---------
#include "test.h"int main(void){
test<char> Mydata1(10);
....
}
Встроенная ошибка:
testc ++. axf: ошибка: L6218E: неопределенный символ test :: test (без знака) (по ссылке из main.o).
testc ++. axf: ошибка: L6218E: неопределенный символ test :: ~ test () (по ссылке из main.o).
Задача ещё не решена.
Других решений пока нет …