I've written the following code, i want to use my own hash map and overwrite the find function suitably. my map values are of type packet_entry_t.

#ifndef SIM_A_CX_SW_PACKET_STORAGE_H
#define SIM_A_CX_SW_PACKET_STORAGE_H


#include <map>

#ifdef LOG_PACKET_TIMES
#include <iostream>
#include <fstream>
#include <cstring>
#endif // LOG_PACKET_TIMES

template <class TTileAddress_t>
class packet_storage {

private:
typedef packet_entry_t<TTileAddress_t> pkt_entry_t;


typedef std::map<unsigned int, pkt_entry_t>::iterator iterator_t;

map<unsigned int, pkt_entry_t> pkts_map;

public:
packet_storage();
~packet_storage();

// problem 1
typename std::map<unsigned int, pkt_entry_t>::iterator it;

//problem 2
std::map<unsigned int, pkt_entry_t>::iterator find(unsigned int a , unsigned int b);
std::map<unsigned int, pkt_entry_t>::iterator find(unsigned int );

}; // end class packet_storage
#endif //end packet_storage_h


i receive errors in line //problem 1 and //problem 2 as follow.

//problem 1 erro:::
type ‘std::map<unsigned int, packet_entry_t<TTileAddress_t>, std::less<unsigned int>, std::allocator<std:air<const unsigned int, packet_entry_t<TTileAddress_t> > > >’ is not derived from type ‘packet_storage<TTileAddress_t>’

//problem 2 error:::
error: type ‘std::map<unsigned int, packet_entry_t<TTileAddress_t>, std::less<unsigned int>, std::allocator<std:air<const unsigned int, packet_entry_t<TTileAddress_t> > > >’ is not derived from type ‘packet_storage<TTileAddress_t>’


CAN ANY BODY TELL ME WHY? AND HOW CAN I SOLVE THE PROBLEM
I SOULD BE GRATEFUL.
THANKS
ATEFE