Эта строка кода неправильная (две строки, которые выглядят так же):
int result = *newBook.compareTo(current->book->getBook());
Если вы разыграете, используйте круглые скобки:
int result = (*newBook).compareTo(current->book->getBook());
Но чтобы было легче читать, я бы предложил:
int result = newBook->compareTo(current->book->getBook());
Это должно показать вам вашу реальную проблему: compareTo () ожидает объект Book, а getBook () возвращает символ *. Используйте следующее, и это хорошо для меня. Без основной функции, которая использует классы, я не могу сказать вам, правильно ли работает ваш код, но теперь он компилируется.
Вы должны действительно перегрузить оператор равенства в Book.h для сравнения. Надеюсь это поможет.