Code:
winner(playerChoice, compChoice);
playerChoice and compChoice are function prototypes. When you pass them into functions as arguments, they become function pointers. You can't turn a function pointer into a string. Yet, it's even worse than that. As far as I can tell, none of the functions are actually sharing any information.

You have the player decide what to play one way:
Code:
int playerChoice()
{
        char playerChoice; // not a string
        cout<<"Enter your choice: ";
        cin>>playerChoice;
 
 
        switch(playerChoice)
        {
            case 'r': case 'R':
                cout<<"Player: Rock"<<endl;
                break;
            case 'p': case 'P':
                cout<<"Player: Paper"<<endl;
                break;
            case 's': case 'S':
                cout<<"Player: Scissors"<<endl;
                break;
            default:
                cout<<"Play option does not exist!"<<endl;
                break;
        }
}
Then the computer decides another way:
Code:
int compChoice()
{
    int compChoice;
    compChoice = rand()%3;
    if(compChoice == 1)
        {cout<<"Computer: Rock"<<endl;}
    else if(compChoice == 2)
        {cout<<"Computer: Paper"<<endl;}
    else if(compChoice == 3)
        {cout<<"Computer: Scissors"<<endl;}
}
And what each person plays never comes out of these functions. If you did the simplest thing and simply returned the choices, those choices aren't even the same type in the end.