How to Clean up Static Pointer Attributes

 
So I am trying to implement a class (whose incomplete code can be seen below). In its implementation, I want to use a static pointer to help with static operations. However, I don't know what would be the best way to delete that pointer's memory upon de-initialization (I know I can implicitly delete it). Does anyone have any have any advice? 
class Boolean{
   public: 
      static string bool_arr[10];
      static const HashMap<string, bool>* bool_convert_map; 
      static int bool_arr_size; 
      static bool is_bool(string input_val){
         groom(input_val); 
         int i;
         int size_of_string = StringLen(input_val);  
         string curr_bool_str; 
         for(i = 0; i < Boolean::bool_arr_size; i++){
            curr_bool_str = Boolean::bool_arr[i];
            if(StringCompare(input_val, curr_bool_str) == 0){
               return true; 
            } 
         }
         return false; 
      }
      
      static bool convert_to_bool(string input_val){
         groom(input_val); 
         return Boolean::bool_convert_map[input_val]; 
      }
      
         
};

static string Boolean::bool_arr[10] = {"true", "false", "1", "0", "t", "f", "yes", "no", "y", "n"}; 
bool associated_truth_values[10] = {true, false, true, false, true, false, true, false, true, false};
static int Boolean::bool_arr_size = 10; 
static const HashMap<string, bool>* Boolean::bool_convert_map = new HashMap<string, bool>(Boolean::bool_arr, associated_truth_values); 
// groom just trims both left and right then puts the string to lower case. 
 

Here is a possible solution: Encapsulating the pointer in another class. In this new class, you will delete the pointer. 


class Boolean_Map{
   public: 
      static string bool_arr[10];
      static bool associated_truth_values[10];
      static int bool_arr_size; 
      const HashMap<string, bool>* bool_convert_map;
      Boolean_Map(){   
         this.bool_convert_map = new HashMap<string, bool>(this.bool_arr, this.associated_truth_values); 
      }
      ~Boolean_Map(){delete this.bool_convert_map;}
};


int Boolean_Map::bool_arr_size = 10; 
string Boolean_Map::bool_arr[10] = {"true", "false", "1", "0", "t", "f", "yes", "no", "y", "n"}; 
bool Boolean_Map::associated_truth_values[10] = {true, false, true, false, true, false, true, false, true, false};

class Boolean{
...
    public: 
        static Boolean_Map map; 
...
};

Boolean_Map Boolean::map(); 

Problem: 

Other classes can create a Boolean_Map (though this might not be a bad thing). I don't think you can use a singleton implementation to get around this as this will have to include pointers or global declarations (i.e static singleton), putting us back to square one. 


If anyone has a better solution feel free. 

Reason: