fixed List/ObjectList/Queue in C++17/20

This commit is contained in:
hyzboy 2024-06-18 01:27:46 +08:00
parent ee2bf2b9b8
commit a82810d58a
3 changed files with 9 additions and 16 deletions

View File

@ -192,15 +192,8 @@ namespace hgl
virtual void operator << (const T &obj){Add(obj);} ///<操作符重载添加一个数据 virtual void operator << (const T &obj){Add(obj);} ///<操作符重载添加一个数据
virtual void operator -= (const T &obj){DeleteByValue(obj);} ///<操作符重载删除一个数据 virtual void operator -= (const T &obj){DeleteByValue(obj);} ///<操作符重载删除一个数据
T * GetPointer(const int index) ///<取得指定序列号数据的索引 T * GetPointer(const int index) {return data_array.GetPointer(index);} ///<取得指定序列号数据的索引
{ const T * GetPointer(const int index)const{return data_array.GetPointer(index);} ///<取得指定序列号数据的索引
return(index>=count?nullptr:items+index);
}
const T * GetPointer(const int index) const ///<取得指定序列号数据的索引
{
return(index>=count?nullptr:items+index);
}
bool Get(int index, T &data)const {return data_array.ReadAt (data,index);} ///<取得指定索引处的数据 bool Get(int index, T &data)const {return data_array.ReadAt (data,index);} ///<取得指定索引处的数据
virtual bool Set(int index,const T &data) {return data_array.WriteAt(data,index);} ///<设置指定索引处的数据 virtual bool Set(int index,const T &data) {return data_array.WriteAt(data,index);} ///<设置指定索引处的数据

View File

@ -36,9 +36,9 @@ namespace hgl
List<T *>::Free(); List<T *>::Free();
} }
virtual void Clear() override ///<清除所有数据,但不清空缓冲区 virtual void Clear() override ///<清除所有数据,但不清空缓冲区
{ {
for(auto *obj:data_array) for(auto *obj:List<T *>::data_array)
DeleteObject(obj); DeleteObject(obj);
List<T *>::Clear(); List<T *>::Clear();
@ -46,7 +46,7 @@ namespace hgl
virtual bool IsExist(const ItemPointer &flag)const override ///<确认数据项是否存在 virtual bool IsExist(const ItemPointer &flag)const override ///<确认数据项是否存在
{ {
return this->Find((T *)flag)!=-1; return List<T *>::Find((T *)flag)!=-1;
} }
virtual bool Unlink(int index){return List<T *>::Delete(index);} ///<将指定索引处的数据与列表断开 virtual bool Unlink(int index){return List<T *>::Delete(index);} ///<将指定索引处的数据与列表断开
@ -54,13 +54,13 @@ namespace hgl
virtual bool Unlink(int start,int number){return List<T *>::Delete(start,number);} ///<将指定索引处的数据与列表断开 virtual bool Unlink(int start,int number){return List<T *>::Delete(start,number);} ///<将指定索引处的数据与列表断开
virtual bool UnlinkByValue(const ItemPointer &ip){return List<T *>::DeleteByValue(ip);} ///<将一个指定数据与列表断开 virtual bool UnlinkByValue(const ItemPointer &ip){return List<T *>::DeleteByValue(ip);} ///<将一个指定数据与列表断开
virtual void UnlinkByValue(const ItemPointer *ip,int n){List<T *>::DeleteByValue(ip,n);} ///<将一批指定数据与列表断开 virtual void UnlinkByValue(const ItemPointer *ip,int n){List<T *>::DeleteByValue(ip,n);} ///<将一批指定数据与列表断开
virtual void UnlinkAll(){List<T *>::Clear();} ///<断开所有数据 virtual void UnlinkAll(){List<T *>::Clear();} ///<断开所有数据
private: private:
bool _Delete(int index,int num) bool _Delete(int index,int num)
{ {
if(index<0||num<=0||index+num>=GetCount()) if(index<0||num<=0||index+num>=List<T *>::GetCount())
return(false); return(false);
ItemPointer *p=data_array.data()+index; ItemPointer *p=data_array.data()+index;

View File

@ -198,8 +198,8 @@ namespace hgl
{ {
ObjectQueue<T>::Clear(olc); ObjectQueue<T>::Clear(olc);
data_array[0].Free(); this->data_array[0].Free();
data_array[1].Free(); this->data_array[1].Free();
} }
};//template<typename T> class ObjectQueue };//template<typename T> class ObjectQueue
}//namespace hgl }//namespace hgl