我有一个包含3个不同数组的结构体,例如
struct MyArrys
{
int arr1[3];
int arr2[3];
int arr3[3];
}
我需要根据步长值获取指定的数组,例如考虑以下函数:
int doSomething(int x,int y, MyArrs arrs, const int step, const int idx)
{
int z = // get arr1, arr2, or arr3
return x+y+z;
}
步长值仅为1、2和3,与阵列数量相似。
我尝试实现了一个名为getArrayValue
的函数,它将根据步骤返回相应的数组值
int getArrayValue(const MyArrs& arrs, const int idx, const int step)
{
switch(step)
{
case 0:
return arrs.arr1[idx];
case 1:
return arrs.arr2[idx];
case 2:
return arrs.arr3[idx];
}
}
int doSomething(int x,int y, MyArrs arrs, const int step, const int idx)
{
int z = getArrayValue(arrs,idx,step);
return x+y+z;
}
这办法行得通。
有没有更好的方法来做到这一点?我可以在这里使用SFINAE吗?以及如何使用?它甚至值得使用SFINAE吗?
1条答案
按热度按时间zy1mlcev1#
您可以使用指向成员的指针表。
示例: