holdings is a vectors of pointers. holdings.at() is going to return a reference to a pointer to a Book. Line 5, you can't assign a pointer to a Book to a Book.
You can fix that in one of two ways.
1 2 3 4
// 1. Make btemp a pointer.
Book * btemp = holdings.at(i); // Assign a pointer
// 2. Dereference the pointer returned by at()
Book btemp = *holdings.at(i);