函数要从数组里删除一个数组项,但是数组的类型不确定,我是这样做的:void DeleteFromArray(void* array,int type,int index)
{
if (type == 0)
{
SOCKET* Array = (SOCKET*)array;
SOCKET* END = Array+WSA_MAXIMUM_WAIT_EVENTS;
Array += index;
while(Array<END)
{
*Array = *(++Array);
}
}
if (type == 1)
{
WSAEVENT* Array = (WSAEVENT*)array;
WSAEVENT* END = Array+WSA_MAXIMUM_WAIT_EVENTS;
Array += index;
while(Array<END)
{
*Array = *(++Array);
}
}
i--;
}这样函数内部代码重复度很高啊,觉得应该用模板,可不会写。
麻烦各位大侠改改,使代码重复度降到最低。谢谢!!!
{
if (type == 0)
{
SOCKET* Array = (SOCKET*)array;
SOCKET* END = Array+WSA_MAXIMUM_WAIT_EVENTS;
Array += index;
while(Array<END)
{
*Array = *(++Array);
}
}
if (type == 1)
{
WSAEVENT* Array = (WSAEVENT*)array;
WSAEVENT* END = Array+WSA_MAXIMUM_WAIT_EVENTS;
Array += index;
while(Array<END)
{
*Array = *(++Array);
}
}
i--;
}这样函数内部代码重复度很高啊,觉得应该用模板,可不会写。
麻烦各位大侠改改,使代码重复度降到最低。谢谢!!!
template<typename T>
void DeleteFromArray(T* array,int index)
{
...
}另外还可以用把整个函数改成宏…… :)
void DeleteFromArray(T* array,int index)
{
T* Array = (T*)array;
T* END = Array+WSA_MAXIMUM_WAIT_EVENTS;
Array += index;
while(Array<END)
{
*Array = *(Array+1);
Array++;
}
i--;
}