我有一些类似于
Class1
风格的课程(见代码)。一个枚举和一个函数用来获取枚举中的所有值。这些值(如FOO_1
,FOO_2
等)从一个类到另一个类都不同,值的数量也不同(如sizeof(Foos)
)。
我调用该函数一次以获取枚举的大小,预留内存,并在第二次调用中想要获取所有值到*pFoos
中(示例代码中为2
、1
、6
)。
除了使用包含所有值的数组(如size_t arr[3] ={FOO_1 , FOO_X, FOO_BAR }
),是否有更好的方法?class Class1{
enum Foos{
FOO_1 = 2,
FOO_X = 1,
FOO_BAR = 6
}
};
Class1::GetFoos(size_t* pFoos, size_t* pSize)
{
size_t len = sizeof(Foos);
if (len > *pSize)
{ //Call function once to get the size
*pSize= len ;
return -1;
}
for(size_t i = 0; i< *pSize; i++)
{
//copy all enum values to pFoos
}
};