本想写个模板函数,然后导成DLL,然后可以到处引用。可是后来发现,我的想法很天真。
由于C++是强类型语言,所以模板在用的时候必须确定其类型。而C++的模板只是一种语法糖,只不过是编译器在后台在做字符串替换罢了。
而dll导出的内容一定要是实实在在的,而模板必需要实例化成具体的东西,才能导出。
所以只能是在dll内部再写个类,把此类导出来,然后让此类内部去调用模板来实现。
在此写了两个参数为数组的模板,模板的功能也很简单,就查找数组中值的下标。
/**
* @brief 简单数组类型中检索相应值的位置,size直接可以由模板自己导出。
常用的简单数组类型比如:int[],double[]等
* @param[in] T 数组
* @param[in] size 数组大小
* @return int 值在数组的中的下标
*/
template <typename T,int size>
int GetIndex(T (&vec)[size],T cmp)
{
for (int i = 0; i <= size ;i++)
{
if (vec[i] == cmp)
{
return i;
}
}
return -1;
};
调用可以由以下:
int arr[10]={1,2,3,4,5,6,7,8,9,10};
for(int i=0;i<10;i++)
{
warr.Add(i);
}
//int b = FindIndx&