Accessing a string from

I am taking a C++ class in which I am suppose to implement a linked list where I insert a node alphabetically by name. I am suppose to create a Winery class with name of the winery, location, acreage, and rating, and then create a list class that implements a linked list that sorts the wineries alphabetically by name. The definition of the winery class is followed by the definition of the list class. In the insert method in the list class, I am suppose to insert the new winery into the list in alphabet order by name. I made an attempt but I know that what my code currently looks like is incorrect. How can I improve the code, or at least make the pointer access correct? I am asking about the code in the insert method after the //******.

I know that newNode->item->name is incorrect. What would be the correct syntax? I also know that (headByName + idx)->item->name is incorrect but what is the correct syntax for that? Or is there a better way to do the comparison? Does the while statement work? Yes, I have a lot to learn about C++ and pointers that is why I am in this class trying to learn. Thank you so much for your help.

// Print out the wineries in alphabetical order by name,
// by calling winery's operator<< for each winery.
void displayByName(ostream& out) const;

// Print out the wineries from highest to lowest rating,
// by calling winery's operator<< for each winery.
void displayByRating(ostream& out) const;

// Insert a winery into both the names and ratings threads.
// The names thread should be in alphabetical order by name.
// The ratings thread should be in order from highest rating
// to lowest rating.
void insert(const Winery& winery);

// Return a const pointer to the winery instance it finds in
// the list, or 0 if it didn't find a winery with that name.
// Because the pointer is declared const, there is no danger
// that find's caller will be able to use the returned pointer
// to change the instance of winery.
Winery * const find(const char * const name) const;

// Remove the winery with the specified name from both the name
// thread and the ratings thread. Returns true if it found and
// removed the winery, false if it did not find the winery.
bool remove(const char * const name);