函数要从数组里删除一个数组项,但是数组的类型不确定,我是这样做的: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--;
}这样函数内部代码重复度很高啊,觉得应该用模板,可不会写。
麻烦各位大侠改改,使代码重复度降到最低。谢谢!!!

解决方案 »

  1.   

    既然楼上这么说了,我就不写代码了不过LZ,你删除的那个元素好像没有delete掉啊?
    template<typename T>
    void DeleteFromArray(T* array,int index)
    {
      ...
    }另外还可以用把整个函数改成宏…… :)
      

  2.   

    谢2楼,这么改对吗?template<typename T>
    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--;
    }