I got this error when I used names to print the strings, but no errors when tempNames is used.
char* names[] = { "JIM",
                  "RAM",
                  "SAM",
                  0  };
int main(int argc, char *argv[])    
{
    char** tempNames = names ;        
    while(*names != 0)
        std::cout << *names++ << std::endl ; 
    return 0;
}
How come *names became an rvalue whereas *tempNames is an lvalue.
 
     
     
    