Не получается разделить код на шаблон класса и на реализацию методов шаблона класса.
Шаблон класса достаточно простой, имеет конструктор по умолчанию с заданным аргументом по умолчанию (аргумент задает кол-во элементов в массиве) и деструктор. Класс реализует обвертку стандартного С-шного массива.
Делаю так:
main.cpp
#include <iostream>
#include <TypeArray.h>
int main(){
TypeArray<int> massive(5);
return 0;
}
TypeArray.cpp
#include <TypeArray.h>
template<typename Type>
TypeArray<Type>::TypeArray(int size){
_size = size;
pia = new Type[_size];
if( typeid(*pia).name() == typeid(char).name() ){
for(int i(0); i < _size; ++i){
pia[i] = '?';
}
}else{
for(int i(0); i < _size; ++i){
pia[i] = 0;
}
}
}
template<typename Type>
TypeArray<Type>::~TypeArray(){
delete[] pia;
}
TypeArray.h
#ifndef TYPEARRAY_H
#define TYPEARRAY_H
#include <iostream>
#include <typeinfo>
using namespace std;
template <typename Type>
class TypeArray{
private:
Type *pia;
int _size;
public:
//конструктор по умолчанию
TypeArray(int size = 10);
//Деструктор
~TypeArray();
};
#endif
Компилятор ругается на: