Исправил/Дополнил...
typedef unsigned char* PBYTE;
class CArrayBase
{
protected:
CArrayBase();
virtual ~CArrayBase;
public:
void InitArray ( int NumItems, PBYTE* pArray ); // создает массив
void RemoveItem( PBYTE Item ); // удалить элемент массива со значением Item
protected:
virtual void CopyItem(PBYTE* pdst, PBYTE src) {};
virtual BOOL CompareItems(PBYTE item1, PBYTE item2) {return TRUE;};
PBYTE* m_pArray;
int m_TypeSize; // реальный размер того что передается через PBYTE
// в моей реальной задаче это в любом случае надо, для других целей..
};
template <class TYPE, int TYPE_SIZE>
class TArrayPointer: public CArrayBase // темплейт для ряботы с указателями (STR255 и RECT*)
{
public:
CArrayBase() {m_TypeSize=TYPE_SIZE;}
void InitArray ( int NumItems, TYPE* pArray )
{ CArrayBase::RemoveItem((PBYTE*) pArray); }
void RemoveItem( TYPE Item );
{ CArrayBase::RemoveItem((PBYTE) Item);
protected:
virtual void CopyItem(PBYTE* pdst, PBYTE src)
{ **((TYPE*)pdst)=*(*(TYPE*)&src) };
virtual BOOL CompareItems(PBYTE item1, PBYTE item2)
{ return _strnicmp((LPCSTR)item1,(LPCSTR)item2,__TYPE_SIZE); };
};
// ну и по такому же принципу темплэйт TArrayValue для работы с UINT