I am working on OOP C++ program and I’m bit struggling. I’m trying to create a program that demonstrates use of default and non-default constructors and pointers. I’m trying to do default constructor first.
So I am able to store and retrieve only the local variables inside of one method. But now I must pass values to other class (I think I must) and then retrieve the information again but little modified.
I could initialize object to one class as I did but then when I try to retrieve the object it basically doesn’t retrieve anything but empty space. How do I correctly pass an object to method in another class and then retrieve it back?
Any pointers?
Book.cpp
#include <iostream>
#include <sstream>
using namespace std;
#include "Book.h"
Book::Book()
{
}
void Book::setTitle(string title)
{
this->title = title;
}
void Book::setAuthorName(string first, string last)
{
Author author;
author.setFirstName(first);
author.setLastName(last);
}
void Book::setPrice(double price)
{
this->price = price;
}
string Book::convertDoubleToString(double number)
{
return static_cast<ostringstream*>( &(ostringstream() << number) ) -> str();
}
string Book::getBookInfo()
{
stringstream ss;
Author author;
ss << title << endl << author.getFullName() << endl << "$" << convertDoubleToString(price) << endl;
return ss.str();
}
This part is not going to work
because inside this function you create a local object, set its values and then its destroyed when the function exits. You need to create a member variable of class
Authorinside your Book class if you want to retain this author information.Inside your Book class declaration, you need something like this
then inside your
setAuthorNamefunction, set the values ofm_Authorrather than creating a local variable. This will retain the values inside the member variablem_Author