Token error with c++

I have been through this code several times, but it is still not working. It is in c++ and designed for an arduino microcontroller. When I try to upload/verify, I get this error:

morse_send:37:20: error: a function-definition is not allowed here before '{' token
     void MorseDot(){
                    ^
morse_send:41:21: error: a function-definition is not allowed here before '{' token
     void MorseDash(){
                     ^
morse_send:46:31: error: a function-definition is not allowed here before '{' token
     void GetChar(char tmpChar){
                               ^
exit status 1
a function-definition is not allowed here before '{' token

Here is my code:

/* ********************************** /
 * Morse Code Translator
 * Copyright (c) Gabriel Gutierrez
/* ********************************* */


char stringToMorse[] = "";

int audio = 8;      // buzzer is connected to pin 8
int pitch = 1200;      // music note/pitch
int dotLen = 100;     // length of the dot
int dashLen = dotLen * 3;    // length of the dash

void loop() {
  char inChar = 0;         
  char inData[100] = "";
  String variable = "";
  String variable1 = "";
  int index1 = 0;
  // Checks is the serial monitor is sending characters to the board
  if ( Serial.available() > 0 ) {                     
   while (Serial.available() > 0 && index1 < 100) {
      delay(100);
      inChar = Serial.read();
      inData[index1] = inChar;
      index1++;
      inData[index1] = '\0';
    }
  }
    // Converts the string to uppercase to make it easier to convert to morse
    variable.toUpperCase();
    for (byte  i = 0 ; i < 100 ; i++) {
      variable.concat(String(inData[i]));  
    }
    delay(20);
    // The functions for a dash and a dot
    void MorseDot(){
        tone(audio, note, dotLen); // start playing a tone
        delay(dotLen);              // hold for the predefined length of time
    };
    void MorseDash(){
        tone(audio, note, dashLen);  // start playing a tone
        delay(dashLen);               // hold for the predefined length of time
    };
    
    void GetChar(char tmpChar){
        switch (tmpChar){
            case 'a': 
            MorseDot();
            delay(100);
            MorseDash();
            delay(100);
            break;
    
            case 'b':
            MorseDash();
            delay(100);
            MorseDot();
            delay(100);
            MorseDot();
            delay(100);
            MorseDot();
            delay(100);
            break;
    
            case 'c':
            MorseDash();
            delay(100);
            MorseDot();
            delay(100);
            MorseDash();
            delay(100);
            MorseDot();
            delay(100);
            break;
    
            case 'd':
            MorseDash();
            delay(100);
            MorseDot();
            delay(100);
            MorseDot();
            delay(100); 
            break;
    
            case 'e':
            MorseDot();
            delay(100);
            break;
    
            case 'f':
            MorseDot();
            delay(100);
            MorseDot();
            delay(100);
            MorseDash();
            delay(100);
            MorseDot();
            delay(100);
            break;
    
            case 'g':
            MorseDash();
            delay(100);
            MorseDash();
            delay(100);
            MorseDot();
            delay(100);
            break;
    
            case 'h':
            MorseDot();
            delay(100);
            MorseDot();
            delay(100);
            MorseDot();
            delay(100);
            MorseDot();
            delay(100);
            break;
    
            case 'i':
            MorseDot();
            delay(100);
            MorseDot();
            delay(100);
            break;
    
            case 'j':
            MorseDot();
            delay(100);
            MorseDash();
            delay(100);
            MorseDash();
            delay(100);
            MorseDash();
            delay(100);
            break;
    
            case 'k':
            MorseDash();
            delay(100);
            MorseDot();
            delay(100);
            MorseDash();
            delay(100);
            break;
    
            case 'l':
            MorseDot();
            delay(100);
            MorseDash();
            delay(100);
            MorseDot();
            delay(100);
            MorseDot();
            delay(100);
            break;
    
            case 'm':
            MorseDash();
            delay(100);
            MorseDash();
            delay(100);
            break;
    
            case 'n':
            MorseDash();
            delay(100);
            MorseDot();
            delay(100);
            break;
    
            case 'o':
            MorseDash();
            delay(100);
            MorseDash();
            delay(100);
            MorseDash();
            delay(100);
            break;
    
            case 'p':
            MorseDot();
            delay(100);
            MorseDash();
            delay(100);
            MorseDash();
            delay(100);
            MorseDot();
            delay(100);
            break;
    
            case 'q':
            MorseDash();
            delay(100);
            MorseDash();
            delay(100);
            MorseDot();
            delay(100);
            MorseDash();
            delay(100);
            break;
    
            case 'r':
            MorseDot();
            delay(100);
            MorseDash();
            delay(100);
            MorseDot();
            delay(100);
            break;
    
            case 's':
            MorseDot();
            delay(100);
            MorseDot();
            delay(100);
            MorseDot();
            delay(100);
            break;
    
            case 't':
            MorseDash();
            delay(100);
            break;
    
            case 'u':
            MorseDot();
            delay(100);
            MorseDot();
            delay(100);
            MorseDash();
            delay(100);
            break;
    
            case 'v':
            MorseDot();
            delay(100);
            MorseDot();
            delay(100);
            MorseDot();
            delay(100);
            MorseDash();
            delay(100);
            break;
    
            case 'w':
            MorseDot();
            delay(100);
            MorseDash();
            delay(100);
            MorseDash();
            delay(100);
            break;
    
            case 'x':
            MorseDash();
            delay(100);
            MorseDot();
            delay(100);
            MorseDot();
            delay(100);
            MorseDash();
            delay(100);
            break;
    
            case 'y':
            MorseDash();
            delay(100);
            MorseDot();
            delay(100);
            MorseDash();
            delay(100);
            MorseDash();
            delay(100);
            break;
    
            case 'z':
            MorseDash();
            delay(100);
            MorseDash();
            delay(100);   
            MorseDot();
            delay(100);
            MorseDot();
            delay(100);
            break;
    
            default:
                break;
  }
}
}

To my understanding, a token error means that I did not close a {}, [], or (), but I can’t find any such instance. Thanks for any help!

You don’t declare and define functions inside of functions in C. You need to 'ull those definitions outside the loop (usually called main) function.