1、

在includes.h中定义,应该是全局函数,作用是打印入参:



template<typename T>
void record(T info)
{
qDebug()<<info;
}


可根据不同平台修改打印函数,这里是Qt平台,使用的是qDebug,也可以C++的std::cout

使用:



record<int>(1);//先包含头文件


 2、类内部的函数模板



template<class T>//获取服务,通过模板
T* getService()
{
qDebug()<<"getService";
T* s;
RET_VALUE_IF_EAQU(context,nullptr,s);
ctkServiceReference reference = context->getServiceReference<T>();
if(reference)
{
s = context->getService<T>(reference);// 获取指定 ctkServiceReference 引用的服务对象
if (s == nullptr)
{
print("Try to get a invalid service");
}
}
return s;
}


使用



AbsLogService* log = PullService::getInstance()->getService<AbsLogService>();
log->log("123");


 

ps:

最好函数的声明和定义都在头文件中完成,如果分开有如下两个问题:

①、警告

warning: instantiation of function' required here, but no definition is available

②、运行报错

无法解析的外部符号 xxxx,该符号在函数 main 中被引用




长风破浪会有时,直挂云帆济沧海!