Ok, so a function you call wants an argument of type char*&. That probably means, it takes a character string in the form of a char* as input, but wants to have the freedom of allocating a new buffer and return that via this parameter (therefore the reference).
Unfortunately the function wants to have a char*& and not a const char*&. That means, the function reserves also the right to modify the string you are passing in. That means, you must allocate a new buffer for that string and you cannot use the buffer of your CString object.
Here is what I would do:
CString myString ("abcdef");
...
char* pBuffer = new char[myString.GetLenght() + 1]; strcpy (pBuffer, myString);
char* pArg = pBuffer; OtherFunction (pArg);
...
... look at what OtherFunction has returned via pArg
...
delete [] pBuffer;
...
... possibly you will have to delete [] pArg too, depending on the
... interface of OtherFunction.
As you see, this is an extremely ugly and dangerous interface and I would try to avoid such constructs whenever possible.