问题描述
我对C ++还是很陌生,但想尝试做一些精美的模板工作。我不确定是否有可能,但我相当有信心实现这一目标的方法。
所以这是问题所在: 我正在调用各种硬件功能,该功能需要多个参数,并且仅因一种参数类型而异:
int Read(HANDLE handle,int location,char* Name,int startindex1,int endindex1,int startindex2,int endindex2,int* rval,Astruct* callback) ;
int Read(HANDLE handle,double* rval,Astruct* callback) ;
Hardware Interface根据索引的值返回标量,数组或矩阵。我真正想要实现的是一个函数,该函数根据我传递的参数数量返回一个T
或vector<T>
或vector<vector<T>>
。
T MyReadFunction<T>(HANDLE handle,int index)
vector<T> MyReadFunction<T>(HANDLE handle,int endindex1 )
vector<vector<T>> MyReadFunction<T>(HANDLE handle,int endindex1
int startindex2,int endindex2)
其中T
是基本类型,例如int
,real
,float
,double
等
使用3个不同的模板进行专业化是没有问题的,但是我希望以某种方式将其组合。
我的假设是,这可以使用模板专业化来实现,但是我无法解决。我想我应该是这样的:
template<typename T,int... Indexes>
T MyReadFunction (HANDLE handle,Indexes... myIndex){}
template<>
int MyReadFunction (HANDLE handle,int myindex)
{
int rval = 0;
Read (handle,location,name,myindex,myindey,&rval,NULL) ;
return rval;
}
这是一只两只头的野兽。我迫切需要明确实现这3种情况,以避免滥用,但也想知道如何根据参数包的大小来改变参数包的大小,从而实现模板专业化。
我正在使用VS 2019最新的msvc ++
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)