This says that MyProgram::class2::Run() calls MyProgram::class1<double>:run(), but MyProgram::class1<double>::run() does not exist. Go find where MyProgram::class1<double>::run() is supposed to be defined and figure out why it isn't.
The problem is that I wrote the function prototypes for the two classes in one header file and all the definitions are in one .cpp file. The functions exit and are defined. I don't know why the compiler dose not see them :(