Спасибо за ответ. Дело в том, что я только осваиваю плюсы и поэтому еще не знаю всех возможностей. В данном случае я хотел задавать размер массива, тип массива всегда одинаков. Размер массива будет использоваться неоднократно в функциях этого класса, поэтому хотелось автоматизации. Можно конечно реализовать это с помощью define, но с template разобраться хотелось бы в любом случае. По-поводу задания интегральных значений с помощью template читал у Страутрупа.
Переписал класс с template задающим тип. Ошибка такая же. Значит что-то делаю не так

Код
-----
main.cpp
#include <avr/io.h>
#include "clMy.h"
int main(void)
{
clMy<uint8_t> My;
volatile uint8_t d=My.Func(3);
for(;;);
return (0);
};
-----
clMy.h
#include <avr/io.h>
#ifndef _clMy_
#define _clMy_
template <class T>class clMy
{
private:
T massiv[4];
public:
T Func(uint8_t);
};
#endif
-----
clMy.cpp
#include "clMy.h"
template <class T> T clMy<T>::Func(uint8_t temp)
{
return(massiv[temp]);
}
Не собирается, так как опять не определить ссылки:
Код
Compiling: main.cpp
avr-g++ -c -mmcu=at90can128 -I. -gdwarf-2 -DF_CPU=14745600UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wa,-adhlns=main.lst -Ic:\Sourse\Library -std=gnu++98 -MD -MP -MF .dep/main.o.d main.cpp -o main.o
main.cpp: In function `int main()':
main.cpp:8: warning: unused variable 'd'
Compiling: clMy.cpp
avr-g++ -c -mmcu=at90can128 -I. -gdwarf-2 -DF_CPU=14745600UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wa,-adhlns=clMy.lst -Ic:\Sourse\Library -std=gnu++98 -MD -MP -MF .dep/clMy.o.d clMy.cpp -o clMy.o
Linking: main.elf
avr-g++ -mmcu=at90can128 -I. -gdwarf-2 -DF_CPU=14745600UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wa,-adhlns=main.o -Ic:\Sourse\Library -std=gnu++98 -MD -MP -MF .dep/main.elf.d main.o clMy.o --output main.elf -Wl,-Map=main.map,--cref -lm
main.o: In function `main':
c:\sourse\otl/main.cpp:8: undefined reference to `clMy<unsigned char>::Func(unsigned char)'
C:\WinAVR\utils\bin\make.exe: *** [main.elf] Error 1
Может дело в makefile? Вот кусочки makefile:
Код
FORMAT = ihex
TARGET = main
CPPSRC = $(TARGET).cpp clMy.cpp
CPPSTANDARD = -std=gnu++98
CPPFLAGS = -g$(DEBUG)
CPPFLAGS += $(CDEFS) $(CINCS)
CPPFLAGS += -O$(OPT)
CPPFLAGS += -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums
CPPFLAGS += -Wall
CPPFLAGS += -Wa,-adhlns=$(<:.cpp=.lst)
CPPFLAGS += $(patsubst %,-I%,$(EXTRAINCDIRS))
CPPFLAGS += $(CPPSTANDARD)
LDFLAGS = -Wl,-Map=$(TARGET).map,--cref
LDFLAGS += $(EXTMEMOPTS)
LDFLAGS += $(PRINTF_LIB) $(SCANF_LIB) $(MATH_LIB)
CPP = avr-g++
OBJCOPY = avr-objcopy
OBJDUMP = avr-objdump
OBJ = $(SRC:.c=.o) $(CPPSRC:.cpp=.o) $(ASRC:.S=.o)
LST = $(SRC:.c=.lst) $(CPPSRC:.cpp=.lst) $(ASRC:.S=.lst)
GENDEPFLAGS = -MD -MP -MF .dep/$(@F).d
ALL_CPPFLAGS = -mmcu=$(MCU) -I. $(CPPFLAGS) $(GENDEPFLAGS)
all: begin gccversion sizebefore build sizeafter end
build: elf hex eep lss sym
elf: $(TARGET).elf
hex: $(TARGET).hex
eep: $(TARGET).eep
lss: $(TARGET).lss
sym: $(TARGET).sym
SECONDARY : $(TARGET).elf
.PRECIOUS : $(OBJ)
%.elf: $(OBJ)
@echo
@echo $(MSG_LINKING) $@
$(CPP) $(ALL_CPPFLAGS) $^ --output $@ $(LDFLAGS)
%.o : %.cpp
@echo
@echo $(MSG_COMPILING) $<
$(CPP) -c $(ALL_CPPFLAGS) $< -o $@
%.s : %.cpp
$(CPP) -S $(ALL_CPPFLAGS) $< -o $@
%.i : %.cpp
$(CPP) -E -mmcu=$(MCU) -I. $(CPPFLAGS) $< -o $@