That probably will compile but won't link properly. You are attempting to pass in actual objects instead of pointers to objects which causes the linker to look for a different overloaded version of the function/method. If it does compile & link successfully, you'll probably get memory errors and/or crashes. For the declaration you have, this would be the proper call:
method(&a, &b, &c);
With the proper call, a, b, and c in method() would be storing the memory addresses of a, b, and c in the previous scope.
A different, simpler, declaration for a pass by reference would be:
int method( char &a, char &b, int &c );
Then the call would be:
method(a, b, c);
Oops, some overlap.
>>They're using LPSTR, something I've never heard of. I'm thinking this whole component needs updating
AD would have to confirm, as he does a lot with windows programming, but I believe LPSTR is a Windows API typedef for char*. The Windows APIs use a lot of strange type names like that.