create class TrieNonLeafNode


👍 g++ trie.cpp spellCheck.cpp
👍 ./a.out
dbg ARA
dbg A
👍 cat dictionary 
ara are area
👍 cat trie.h
class Trie;

class TrieNonLeafNode {
public:
  TrieNonLeafNode() {
  }
  TrieNonLeafNode(char);
};

class Trie {
public:
  Trie() : notFound(-1) {
  }
  Trie(char*);
private:
  TrieNonLeafNode *root;
  const int notFound;
};

👍 cat trie.cpp 
#include <iostream>
#include "trie.h"
using namespace std;

TrieNonLeafNode::
  TrieNonLeafNode(char ch) {
  cout << "dbg " << ch << endl;
}

Trie::Trie(char* word) : notFound(-1){
  cout << "dbg " << word << endl;
  root = new TrieNonLeafNode(*word);
}
👍 cat spellCheck.cpp 
#include <iostream>
#include <fstream>
#include "trie.h"
using namespace std;

char* strupr(char *s) {
  for (char *ss = s; 
    (*ss = toupper(*ss)); ss++);
  return s;
}

int main(int argc, char* argv[]) {
  char fileName[25], s[80];
  ifstream dictionary("dictionary");
  if (dictionary.fail()) {
    cerr << "Cannot open 'dictionary'"
         << endl;
    exit(-1);
  }
  dictionary >> s;
  Trie trie(strupr(s));
  return 0;
}

    

ch7.4 Case Study: Spell Checker p373/391 of