I'm working on saving objects to a file and reading them back out. Right now I'm trying to do them one at a time to see if I can do and avoid duplicate objects. I'm getting this error: Exception thrown at 0x00915B18 in who.exe: 0xC0000005: Access violation writing location 0xDDDDDDDD 
I know that this is because I'm not doing something with a pointer correctly but I'm lost and can't quite figure it out, current code is:
#include<iostream>
#include "Book.h"
#include "InventoryBook.h"
#include "SoldBook.h"
#include<string>
#include<fstream>
using namespace std;
void saveBook(Book);
Book returnBook();
void main() {
    Book novel;
    InventoryBook shelf;
    SoldBook gone;
    novel.setAuthor("Joe");
    novel.setISBN("1234567788");
    novel.setPublisher("Me");
    novel.setTitle("Joe vs. the Volcano");
    saveBook(novel);
    Book rBook = returnBook();
    cout << rBook.getAuthor(); 
    system("Pause");
}
void saveBook(Book saved) {
    ofstream myfile;
    myfile.open("bookInventory.txt", ios::app);
    myfile.write((char*)&saved, sizeof(saved));
}
Book returnBook() {
    ifstream myfile;
    myfile.open("bookInventory.txt", ios::in);
    Book novel;
    Book newBook;
    myfile.read((char*)&novel, sizeof(novel));
    newBook.setAuthor(novel.getAuthor());
    return newBook;
}
I know that the save book function works and that I run into my issues with the returned book object. I'm just not able to see where this goes wrong. I'm a little fuzzy on pointers.
#pragma once
#ifndef BOOK_H
#define BOOK_H
#include<iostream>
using namespace std;
class Book{
private:
    string ISBN;
    string bookTitle;
    string authorName;
    string publisher;
public:
    Book(string, string, string, string);
    Book();
    //destructor
    ~Book();
    //Mutators
    void setTitle(string);
    void setISBN(string);
    void setAuthor(string);
    void setPublisher(string);
    //accessors
    string getTitle();
    string getISBN();
    string getAuthor();
    string getPublisher();
};
#endif
#include "Book.h"
Book::Book() {
    ISBN = "";
    bookTitle = "";
    authorName = "";
    publisher = "";
}
Book::Book(string newISBN, string newTitle, string newAuthor, string newPub) {
    ISBN = newISBN;
    bookTitle = newTitle;
    authorName = newAuthor;
    publisher = newPub;
}
Book::~Book()
{
}
void Book::setISBN(string newISBN) {
    ISBN = newISBN;
}
string Book::getISBN() {
    return ISBN;
}
void Book::setTitle(string newTitle) {
    bookTitle = newTitle;
}
string Book::getTitle() {
    return bookTitle;
}
void Book::setAuthor(string newAuthor) {
    authorName = newAuthor;
}
string Book::getAuthor() {
    return authorName;
}
void Book::setPublisher(string newPub) {
    publisher = newPub;
}
string Book::getPublisher() {
    return publisher;
}