Your header file
Hash.h declares “what
class hash should look like”, but not its implementation, which is (presumably) in some other source file we’ll call
Hash.cpp. By including the header in your main file, the compiler is informed of the description of
class Hash when compiling the file, but not how
class Hash actually works. When the linker tries to create the entire program, it then complains that the implementation (
toHash::insert(int, char)) cannot be found.
The solution is to link all the files together when creating the actual program binary. When using the g++ frontend, you can do this by specifying all the source files together on the command line. For example:
g++ -o main Hash.cpp main.cpp
will create the main program called “main”.