typedef wxHashTableBase_Node Node;
 
     wxHashTableBase();
-    virtual ~wxHashTableBase();
+    virtual ~wxHashTableBase() { };
 
     void Create( wxKeyType keyType = wxKEY_INTEGER,
                  size_t size = wxHASH_SIZE_DEFAULT );
         : wxHashTableBase() { Create( keyType, size ); BeginFind(); }
     wxHashTable( const wxHashTable& table );
 
+    virtual ~wxHashTable() { Destroy(); }
+
     const wxHashTable& operator=( const wxHashTable& );
 
     void Destroy() { Clear(); }
                   size_t size = wxHASH_SIZE_DEFAULT)                          \
             : wxHashTableBase() { Create(keyType, size); }                    \
                                                                               \
-        ~hashclass() { Destroy(); }                                           \
+        virtual ~hashclass() { Destroy(); }                                   \
                                                                               \
         void Destroy() { Clear(); }                                           \
         void Put(long key, eltype *data) { DoPut(key, key, (void*)data); }    \
 
 {
 }
 
-wxHashTableBase::~wxHashTableBase()
-{
-    Destroy();
-}
-
 void wxHashTableBase::Create( wxKeyType keyType, size_t size )
 {
     m_keyType = keyType;
     return *this;
 }
 
-void wxHashTable::DoCopy( const wxHashTable& table )
+void wxHashTable::DoCopy( const wxHashTable& WXUNUSED(table) )
 {
     Create( m_keyType, m_size );