一个void函数,在单例类</class>中接收模板<class t =“”>

时间:2013-12-20 08:52:28

标签: function templates vector

我的功能有困难。基本上我有3个不同的“学生”课程(这是一个模拟大学生和课程数据库的项目) bsc_student,masters_student,其他学生。 我创建了一个名为hit的单例类,里面是*学生向量,*课程向量,这就是它看起来类hit_database

{ public:
static hit_database* getinstance();
vector <student*> GetStudentsArray() const;
template <class T>
void instert_student_to_student_vector(T*);`

protected:
vector <course*> student_course_list;
vector <student*> students_list;
vector <student_course_connection> student_course_connector;
static hit_database* instance;
hit_database();
};`

你可以看到我需要一个我这样做的set函数:

void hit_database::insert_student_to_student_vector(T* f)

{ this->students_list.push_back(f); }

现在我有另一个名为admin_interface的类,里面有一个函数create_new_student看起来像这样:

void admin_interface::create_new_student(int id,string firstname,string lastname,string
adress,string born,int degreetype)
    {
  hit_database *hit=hit_database::getinstance();
  if (degreegtype==1)
    {
    bsc_student x(id, firstname, lastname, adress,born);
    bsc_student *created_student=&x;
    hit->insert_student_to_student_vector(created_student);
    }

if(degreegtype==2)
{
    masters_student x(id, firstname, lastname, adress,born);
    masters_student *created_student=&x;
    hit->insert_student_to_student_vector(created_student);
}
if (degreegtype==3)
{
    other_student x(id, firstname, lastname, adress,born);
    other_student *created_student=&x;
    hit->insert_student_to_student_vector<other_student>(created_student);
}
}   

由于某些原因这不起作用,没有语法错误,包括所有标题,这只会在尝试调试时出错,它可能是什么?我也尝试过模板<typename T>, 当我改变功能所以它只获得bsc_student时,一切正常,我希望我解释了一切,我不想超载问题包括我的所有文件,因为它们很多。

这是我得到的错误:

错误2错误LNK2019:未解析的外部符号“public:void __thiscall hit hit_database :: instert_student_to_ student_vector(class bsc_student *)”(?? $ instert_student_to_student_vector @ Vbsc_student @@@ hit_database @@ QAEXPAVbsc_student @@@ Z)在函数中引用“ public:void __thiscall admin_interface :: create_new_student(int,class std :: basic_string,class std :: allocator&gt;,class std :: basic_string,class std :: allocator&gt;,class std :: basic_string,class std :: allocator &gt;,类std :: basic_string,class std :: allocator&gt;,int)“(?create_new_student @ admin_interface @@ QAEXHV?$ basic_string @ DU?$ char_traits @ D @ std @@ V?$ allocator @ D @ 2 @@ std @@ 000H @ Z)C:\ Users \ Max \ Documents \ Visual Studio 2010 \ Projects \ student_project \ student_project \ admin_interface.obj

0 个答案:

没有答案