If that is the exact wording of the question then it's a trap. C++ does not allow to override the behavior of arithmetic operators between predefined types, for example int and char*. That's what the error message C2803 is telling you, and the compiler is correct in this case.
So what can you do about it? You have to make one of the parameters a "class type" as the message says. Your parameter c is a pointer to a null-terminated character string and is the ideal candidate for replacement. For example, we could replace it with an std::string reference.
#include <string>
using namespace std;
string& operator+ (const int k, string& c)
{
size_t len = c.length();
for (size_t i = 0; i < len; i++)
c[i] += k;
return c;
}
Of course you had to change your main function as well.
And after all, as Griff said, this is not a very good idea in the first place and I don't see the purpose of this exercise.