несоответствие типа / значения c ++ в аргументе 1 в списке параметров шаблона

#include 
using namespace std;

template
class people{
    public:
    virtual void insert(T item)=0;
    virtual T show(T info)=0;
};

template
class name
{
    private:
     T fname;
     T lname;
     public:
      name(T first, T last);
    //  bool operator== (name & p1, name &p2)
};
template 
name::name(T first, T last){
    fname = first;
    lname = last;
}
template 
class person : public people
{
    private:
    T a[1];
    int size;
    public:
    person();
    virtual void insert(T info);
    virtual T show();
};
template
person::person(){
    size = 0;
}
template
void person::insert(T info){
    a[0] =info;
}
template
T person::show(){
      return a[0];
 }
int main(){
    string first("Julia"), last("Robert");
    name temp(first,last);
    people* aPerson = new person();
    aPerson-> insert(temp);
    aPerson->show();
    return 0;
}

Это ошибки, которые я продолжаю получать и могуt точно определить, в чем действительно заключается проблема:

test.cpp:52: error: type/value mismatch at argument 1 in template parameter list for 'template class people'
test.cpp:52: error:   expected a type, got 'name'
test.cpp:52: error: invalid type in declaration before '=' token
test.cpp:52: error: expected type-specifier before 'person'
test.cpp:52: error: expected ',' or ';' before 'person'
test.cpp:53: error: request for member 'insert' in '* aPerson', which is of non-class type 'int'
test.cpp:54: error: request for member 'show' in '* aPerson', which is of non-class type 'int'

Ответы на вопрос(1)

Ваш ответ на вопрос