title: Please Help "EXC_BAD_ACCESS(Code 2)"
body: <p>im writing a C++ program that reads info about books from an external text file, stores the info in an array and writes a new file with the titles and prices of each book. at compile time there is no error but when I run the program I get a bunch of memory locations that pop up on the screen and an error </p>
  
  <blockquote>
    <p>"thread 1: EXC_BAD_ACCESS(Code 2)" </p>
  </blockquote>
  
  <p>if it matters im using xcode on an intel mac. The code is below with a few screen shots of the problem. Thanks</p>
  
  <p>The Code:</p>
  
  <pre><code>//main.cpp
  
  include &lt;iostream&gt;
  include &lt;fstream&gt;
  include "Book.h"
  include "textbook.h"
  include "Name.h"
  using namespace std;
  
  int main() 
  {
  
  string title, authorf, authorl, publisher, isbn, subject;
  int pages, i = 0, j = 0;
  float price, rentalp;
  char code;
  static int bookCount = 0, textbookCount = 0;
  
  ifstream file1, file2;
  ofstream newFile;
  
  file1.open("/Users/TVaughn/Documents/School Stuff/Fall 2012/CS 246/In Class Programs/Book/Book/Data.txt", ios::in); //Opening the data.txt file to read from.
  newFile.open("/Users/TVaughn/Documents/School Stuff/Fall 2012/CS 246/In Class Programs/Book/Book/Title.txt", ios::out); //Creating a new file to store titles &amp; prices of all the books.
  
  book bookList[3];
  
  while (!file1.eof()) {
  
      getline (file1, title, ',');
      getline (file1, authorf, ',');
      getline (file1, authorl, ',');
      getline (file1, publisher, ',');
      getline (file1, isbn, ',');
      file1 &gt;&gt; pages;
      file1.ignore();
      file1 &gt;&gt; price;
      file1.ignore();
      file1 &gt;&gt; code;
      file1.ignore(10, '\n');
  
      book b1(title, authorf, authorl, publisher, pages, isbn, price, code);
      bookList[i] = b1; //initalizing the first element of the array to b1
      newFile &lt;&lt; "Title: " &lt;&lt; bookList[i].getTitle() &lt;&lt; "\n" &lt;&lt; "Price: " &lt;&lt; bookList[i].getPrice() &lt;&lt; "\n\n"; //storing the title and price of all the books in a new file called titles.
      bookList[i].PrintBook();
      i++;
      bookCount++;
  
   }
  
   file1.close();
  
  file2.open("/Users/TVaughn/Documents/School Stuff/Fall 2012/CS 246/In Class Programs/Book/Book/TextbookData.txt", ios::in); //Opening the TextbookData.txt file to read from.
  textbook TbookList[2];
  
  while (!file2.eof()) {
  
      getline (file2, title, ','); //retrieving info from data.txt and storing that info into variables so the variable may be passed as arguments in my textbook object b2.
      getline (file2, authorf, ',');
      getline (file2, authorl, ',');
      getline (file2, isbn, ',');
      file2 &gt;&gt; pages;
      file2.ignore();
      file2 &gt;&gt; price;
      file2.ignore();
      getline(file2, subject, ',');
      file2 &gt;&gt; code;
      file2 &gt;&gt; rentalp;
      file2.ignore(10, '\n');
  
      textbook b2(title, authorf, authorl, publisher, pages, isbn, price, code, subject, rentalp);
      TbookList[j] = b2; //initalizing the first element of the array to b2.
      newFile &lt;&lt; "Title: " &lt;&lt; bookList[j].getTitle() &lt;&lt; "\n" &lt;&lt; "Price: " &lt;&lt; bookList[j].getPrice() &lt;&lt; "\n\n";
      TbookList[j].PrintBook();
      j++;
      textbookCount++;
  
  }
  
  file2.close();
  newFile.close();
  
  cout &lt;&lt; "Number of books: " &lt;&lt; bookCount &lt;&lt; "\nNumber of textbooks: " &lt;&lt; textbookCount &lt;&lt; endl;
  
  book b3("C++ Data Structures", "Nell B.", "Dale", "Jones &amp; Bartlett Publishers", 781, "9780763741587", 107.67, 'A'); //This line is used to test the exception handeling.
  
  try {
  
      b3.setPrice(price);
      b3.setPages(pages);
  
  }
  
  catch (book::negativeNumber) {
  
      cout &lt;&lt; "Negative price was entered \n\n" &lt;&lt; "End of program \n";
  }
  
  return 0;
  }
  
  
  
  
  //book.h
  #include &lt;iostream&gt;
  #include "Name.h"
  #include &lt;string&gt;
  using namespace std;
  
  #ifndef BOOK_H
  #define BOOK_H
  
  class book
  {
  private:
      string title; 
      Name aurthor; 
      string publisher; 
      string ISBN; 
      int pages; 
      float price; 
      char code; 
  
  
  public:
      class negativeNumber{};
      void setTitle(string);
      void setAurthor(string f, string l);
      void setPublisher(string);
      void setISBN(string);
      void setPages(int);
      void setPrice(float);
      void setCode(char);
      string getTitle();
      Name getAurthor();
      string getPublisher();
      string getISBN();
      int getPages();
      float getPrice();
      char getCode();
      void PrintBook();
      book(); //default constructor
      book(string, string, string, string, int, string, float, char); 
      ~book(); //Destructor
  
  
  };
  #endif
  
  
  
  
  //Book.cpp
  #include &lt;iostream&gt;
  #include &lt;string&gt;
  #include "Book.h" 
  #include "Name.h"
  using namespace std;
  
  book::book() {
  
  title = "Southern Charm";
  Name::Name(); 
  publisher = "Impact Publishers";
  pages = 223;
  ISBN = "234-232-10009045";
  price = 14.99;
  code = 'L';
  
  }
  
  book::book(string the_title, string f, string l, string the_pub, int page_num, string the_ISBN, float the_price, char the_c)
  {
  title = the_title;
  //Name(f, l);
  aurthor.setfName(f);
  aurthor.setlName(l); 
  publisher = the_pub;
  pages = page_num;
  ISBN = the_ISBN;
  price = the_price;
  code = the_c;
  
  }
  
  book::~book()
  {
  
  }
  
  void book::setTitle(string t)
  {
  title = t;
  }
  
  void book::setAurthor(string f, string l)
  {
  aurthor.setfName(f);
  aurthor.setlName(l);
  }
  
  void book::setPublisher(string pub)
  {
  publisher = pub;
  }
  
  void book::setISBN(string ISBN_num)
  {
  ISBN = ISBN_num;
  }
  
  void book::setPages(int p) {
  
  if (pages &gt; 0) 
      pages = p;
  else
      throw negativeNumber();
  
  
  }
  
  void book::setPrice(float cost) {
  
  if (price &gt;= 0) //This is called exception handling. 
      price = cost;
  
      else
          throw negativeNumber();
  
  
  }
  
  void book::setCode(char c) {
  code = c;
  }
  
  string book::getTitle() {
  return title;
  }
  
  
  Name book::getAurthor(){
  
  return aurthor;
  
  }
  
  
  string book::getPublisher() {
  
  return publisher;
  }
  
  string book::getISBN(){
  
  return ISBN;
  }
  
  int book::getPages() {
  
  return pages;
  }
  
  float book::getPrice() {
  
  return price;
  }
  
  char book::getCode() {
  
  return code;
  }
  
  void book::PrintBook() {
  
  cout &lt;&lt; "Title: " &lt;&lt; getTitle() &lt;&lt; "\n" &lt;&lt; "Aurthor: ";
  getAurthor().printName();
  cout &lt;&lt; "Publisher: " &lt;&lt; getPublisher() &lt;&lt; "\n" &lt;&lt; "Pages: " &lt;&lt; getPages() &lt;&lt; "\n" &lt;&lt; "ISBN: " &lt;&lt; getISBN() &lt;&lt; "\n" &lt;&lt; "Price: " &lt;&lt; getPrice() &lt;&lt; "\n" &lt;&lt; "Code: " &lt;&lt; getCode() &lt;&lt; "\n \n \n";
  }
  </code></pre>