This gives "can't convert float to float"
So how do you send a variable using Virtual Wire??
I don't think that that is the correct error message that you got.
The key to how to send a variable using Virtual Wire is in the function call itself:
vw_send((uint8_t *)msg, strlen(msg));
The strlen function expects a string as an argument. A string is a NULL terminated array of chars.
char msg[24];
sprintf(msg, "%f", tempC);
vw_send((uint8_t *)msg, strlen(msg));
Unfortunately, sprintf on the Arduino doesn't support the %f format specifier. So, you need to approach the problem slightly differently. Separate the value to be sent into its integral and fractional parts:
int tempC1 = (int)tempC;
int tempC2 = (int)(tempC - tempC1) * 100; // For two decimal points
char msg[24];
sprintf(msg, "%i.%i", tempC1,tempC2);
vw_send((uint8_t *)msg, strlen(msg));