main.cpp
Код
#include <avr/io.h>
#include "clMy.h"
int main(void)
{
clMy My;
volatile uint8_t d=My.Func(3);
for(;;);
return (0);
};
#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
#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]);
}
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);
};
#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
#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]);
}
template <uint8_t count>uint8_t clMy<count>::Func(uint8_t temp)
{
return(massiv[temp]);
}