Не понимаю. Где может быть ошибка при использовании template? Без использования template проект собирается нормально. Проект состоит из 3 фалов main.cpp - откуда вызываю функцию Func, clMy.h - где объявляю класс clMy, и clMy.cpp - где описана реализация функции Func. Вот как это выглядит:
main.cpp
Код
#include <avr/io.h>
#include "clMy.h"
int main(void)
{
clMy My;
volatile uint8_t d=My.Func(3);
for(;;);
return (0);
};
clMy.h
Код
#include <avr/io.h>
#ifndef _clMy_
#define _clMy_
class clMy
{
private:
uint8_t massiv[count];
public:
uint8_t Func(uint8_t);
};
#endif
clMy.cpp
Код
#include "clMy.h"
uint8_t clMy::Func(uint8_t temp)
{
return(massiv[temp]);
}
Это все собирается правильно. Но как только хочу использовать template проект собираться перестает. Линковщик ругается, что не определена ссылка на Func. Видимо что-то неправильно делаю, но что? С плюсами еще только знакомлюсь. Помогите.
main.cpp
Код
#include <avr/io.h>
#include "clMy.h"
int main(void)
{
clMy<4> My;
volatile uint8_t d=My.Func(3);
for(;;);
return (0);
};
clMy.h
Код
#include <avr/io.h>
#ifndef _clMy_
#define _clMy_
template <uint8_t count>class clMy
{
private:
uint8_t massiv[count];
public:
uint8_t Func(uint8_t);
};
#endif
clMy.cpp
Код
#include "clMy.h"
template <uint8_t count>uint8_t clMy<count>::Func(uint8_t temp)
{
return(massiv[temp]);
}