title: C++ function not found during compilation
body: <p>For a homework assignment: I'm supposed to create randomized alphabetial keys, print them to a file, and then hash each of them into a hash table using the function "goodHash", found in my below code.</p>
  
  <p>When I try to run the below code, it says my "goodHash" "identifier isn't found". What's wrong with my code?</p>
  
  <pre><code>#include &lt;iostream&gt;
  #include &lt;vector&gt;
  #include &lt;cstdlib&gt;
  #include "math.h"
  #include &lt;fstream&gt;
  #include &lt;time.h&gt;
  using namespace std;
  
  // "makeKey" function to create an alphabetical key 
  // based on 8 randomized numbers 0 - 25.
  string makeKey() {
      int k;
      string key = "";
      for (k = 0; k &lt; 8; k++) {
          int keyNumber = (rand() % 25);
          if (keyNumber == 0)
              key.append("A");
          if (keyNumber == 1)
              key.append("B");
          if (keyNumber == 2)
              key.append("C");
          if (keyNumber == 3)
              key.append("D");
          if (keyNumber == 4)
              key.append("E");
          if (keyNumber == 5)
              key.append("F");
          if (keyNumber == 6)
              key.append("G");
          if (keyNumber == 7)
              key.append("H");
          if (keyNumber == 8)
              key.append("I");
          if (keyNumber == 9)
              key.append("J");
          if (keyNumber == 10)
              key.append("K");
          if (keyNumber == 11)
              key.append("L");
          if (keyNumber == 12)
              key.append("M");
          if (keyNumber == 13)
              key.append("N");
          if (keyNumber == 14)
              key.append("O");
          if (keyNumber == 15)
              key.append("P");
          if (keyNumber == 16)
              key.append("Q");
          if (keyNumber == 17)
              key.append("R");
          if (keyNumber == 18)
              key.append("S");
          if (keyNumber == 19)
              key.append("T");
          if (keyNumber == 20)
              key.append("U");
          if (keyNumber == 21)
              key.append("V");
          if (keyNumber == 22)
              key.append("W");
          if (keyNumber == 23)
              key.append("X");
          if (keyNumber == 24)
              key.append("Y");
          if (keyNumber == 25)
              key.append("Z");
      }
      return key;
  }
  
  // "makeFile" function to produce the desired text file.
  // Note this only works as intended if you include the ".txt" extension,
  // and that a file of the same name doesn't already exist.
  void makeFile(string fileName, int n) {
      ofstream ourFile;
      ourFile.open(fileName);
      int k; // For use in below loop to compare with n.
      int l; // For use in the loop inside the below loop.
      string keyToPassTogoodHash = "";
      for (k = 1; k &lt;= n; k++) {
          for (l = 0; l &lt; 8; l++) {    // For-loop to write to the file ONE key
          ourFile &lt;&lt; makeKey()[l];
          keyToPassTogoodHash += (makeKey()[l]);
          }
          ourFile &lt;&lt; "  " &lt;&lt; k &lt;&lt; "\n";// Writes two spaces and the data value
          goodHash(keyToPassTogoodHash); // I think this has to do with the problem
          makeKey(); // Call again to make a new key.
      }
  }
  
  // Primary function to create our desired file!
  void mainFunction(string fileName, int n) {
      makeKey();
      makeFile(fileName, n);
  }
  
  // Hash Table for Part 2
  struct Node {
      int key;
      string value;
      Node* next;
  }; 
  const int hashTableSize = 10;
  Node* hashTable[hashTableSize];
  
  // "goodHash" function for Part 2
  void goodHash(string key) {
      int x = 0;
      int y;
      int keyConvertedToNumber = 0;
      // For-loop to produce a numeric value based on the alphabetic key,
      // which is then hashed into hashTable using the hash function
      // declared below the loop (hashFunction).
      for (y = 0; y &lt; 8; y++) {
          if (key[y] == 'A' || 'B' || 'C')
              x = 0;
          if (key[y] == 'D' || 'E' || 'F')
              x = 1;
          if (key[y] == 'G' || 'H' || 'I')
              x = 2;
          if (key[y] == 'J' || 'K' || 'L')
              x = 3;
          if (key[y] == 'M' || 'N' || 'O')
              x = 4;
          if (key[y] == 'P' || 'Q' || 'R')
              x = 5;
          if (key[y] == 'S' || 'T')
              x = 6;
          if (key[y] == 'U' || 'V')
              x = 7;
          if (key[y] == 'W' || 'X')
              x = 8;
          if (key[y] == 'Y' || 'Z')
              x = 9;
          keyConvertedToNumber = x + keyConvertedToNumber; 
      }
      int hashFunction = keyConvertedToNumber % hashTableSize;
      Node *temp;
      temp = new Node;
      temp-&gt;value = key;
      temp-&gt;next = hashTable[hashFunction];
      hashTable[hashFunction] = temp;
  }
  
  // First two lines are for Part 1, to call the functions key to Part 1.
  int main() {
      srand ( time(NULL) );            // To make sure our randomization works.
      mainFunction("sandwich.txt", 5); // To test program
      cin.get();
      return 0;
  }
  </code></pre>
  
  <p>I realize my code is cumbersome in some sections, but I'm a noob at C++ and don't know much to do it better. </p>
  
  <p>I'm guessing another way I could do it is to AFTER writing the alphabetical keys to the file, read them from the file and hash each key as I do that, but I wouldn't know how to go about coding that.</p>