In your first example, notice how you are opening and closing saveData and takeData without streaming anything into them, or even passing pointers to functions/methods.
You don't want to save a function pointer in a data file. If you recompile your program, the address of the function will change and the address in the file will no longer be valid and will cause undefined behavior (probably a crash) when you run.
Also, your error messages are a result of your giving the same name to a variable and a function. I cautioned you about doing this in an earlier thread.
Line 7: You're trying to read into a variable named Level.
Line 17: You're calling a function named Level.
Line 26: You're trying to output Level. The variable or the address of the function? The compiler doesn't know which.
Stylistic suggestion: Make your variable names lower case. Use name case (initial or mixed caps) for functions.
thanks for the advice, i just newly learned saving because i wanted to start learning how to save my program for my game, ill definately use your stylistic suggestion, but do you how i would get around doing that so when i run my program again, the level and earned function will update?
You need to decide the key variables you want to save across games. Once you decided that, then you can write those variables to a file. When you restart a game, simply read the data from that file back into the same variables. One easy way to do that is to put the key variables in a struct, then simply write the struct out and read the struct back in. That also applies to classes. You can have a method in each of your classes that is responsible for archiving the instance of the class to disk, and another method that restores the state of the class from disk.
A couple of problems in the code you posted:
1) You're using LevelUp ambiguously. At line 7, it's a variable. At line 26, it's a label.
2) Gotos are a bad practice and should be avoided. Use a loop instead.