I don't know how I should handle passed objects pointer in my non-default constructor. I am doing this program wrong because I feel like I don't know what I'm doing.
I've been stuck on this for a day and a half and I just don't understand it. I will post majority of my homework where I must use default constructor and non default constructor. I will also include the class diagram that I'm using so you can see how variables/classes/methods function.
What should I be doing with passed pointers inside of non-default constructor? I can't assign any values through here because it will tell me that its inaccessible. In this piece of code:
Book::Book(string title, Author *pAuthor, Publisher *pPublisher, double price)
{
setTitle(title);
setPrice(price);
}
Any idea how to use those pointers? Right now I can correctly pass everything by using default constructor, but I'm probably doing this wrong since I am using additional objects. Basically I shouldn't have 2 lines with Author author;
and Publisher publisher;
but I don't care at this point.
Please help!
Book.cpp file
#include <iostream>
#include <sstream>
using namespace std;
#include "Book.h"
#include "Publisher.h"
#include "Author.h"
class Book
{
public:
Book();
Book(string title, Author *pAuthor, Publisher *pPublisher, double price);
~Book();
void setTitle(string title);
void setAuthorName(string first, string last);
void setPublisher(string name, string address, string city);
void setPrice(double price);
string convertDoubleToString(double number);
string getBookInfo();
private:
string title;
double price;
Author *pAuthor;
Publisher *pPublisher;
Author author;
Publisher publisher;
};
Book::Book()
{
}
Book::Book(string title, Author *pAuthor, Publisher *pPublisher, double price)
{
setTitle(title);
setPrice(price);
}
Book::~Book()
{
}
void Book::setTitle(string title)
{
this->title = title;
}
void Book::setAuthorName(string first, string last)
{
author.setFirstName(first);
author.setLastName(last);
}
void Book::setPublisher(string name, string address, string city)
{
publisher.setName(name);
publisher.setAddress(address);
publisher.setCity(city);
}
void Book::setPrice(double price)
{
this->price = price;
}
string Book::convertDoubleToString(double number)
{
return static_cast<ostringstream*>( &(ostringstream() << number) ) -> str();
}
string Book::getBookInfo()
{
return title + "\n" + author.getFullName() + "\n" + publisher.getPublisherInfo() + "\n" + "$" + convertDoubleToString(price);
}
Main.cpp file:
#include <iostream>
#include <string>
using namespace std;
#include "Book.h"
int main()
{
system("cls");
cout << "Book 1" << endl;
Author *pAuthor = new Author("John", "Doe");
Publisher *pPublisher = new Publisher("Wrox", "10475 Crosspoint Blvd.", "Indianapolis");
Book *pBook = new Book("Memory Management", pAuthor, pPublisher, 39.99);
cout << pBook->getBookInfo() << endl;
cout << endl << "Book 2" << endl;
Book book;
book.setTitle("Advanced C++ Programming");
book.setAuthorName("Linda", "Smith");
book.setPublisher("Microsoft Press", "One Microsoft Way", "Redmond");
book.setPrice(49.99);
cout << book.getBookInfo() << endl << endl;
system("pause");
return 0;
};
Author.cpp file:
#include <iostream>
#include <string>
using namespace std;
class Author
{
public:
Author();
Author(string first, string last);
string getFullName();
void setFirstName(string first);
void setLastName(string last);
private:
string firstName;
string lastName;
};
Author::Author()
{
}
Author::Author(string first, string last)
{
setFirstName(first);
setLastName(last);
}
string Author::getFullName()
{
return firstName + " " + lastName;
}
void Author::setFirstName(string first)
{
this->firstName = first;
}
void Author::setLastName(string last)
{
this->lastName = last;
}
Class Diagram: