我正在研究OOP C ++程序,我有点挣扎。我正在尝试创建一个演示使用默认和非默认构造函数和指针的程序。我想先做默认构造函数。
所以我只能在一个方法中存储和检索局部变量。但是现在我必须将值传递给其他类(我认为我必须),然后再次检索信息,但很少修改。
我可以像往常一样将对象初始化为一个类,但是当我尝试检索对象时,它基本上不会检索除空白空间之外的任何内容。如何正确地将对象传递给另一个类中的方法然后将其检索回来?
任何指针?
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();
}
答案 0 :(得分:3)
这部分不起作用
void Book::setAuthorName(string first, string last)
{
Author author;
author.setFirstName(first);
author.setLastName(last);
}
因为在此函数中创建一个本地对象,设置其值,然后在函数退出时将其销毁。如果要保留此作者信息,则需要在Book类中创建类Author
的成员变量。
在Book类声明中,你需要这样的东西
class Book {
Author m_Author; // This is your member variable that you can store author data in
};
然后在setAuthorName
函数内,设置m_Author
的值,而不是创建局部变量。这将保留成员变量m_Author
答案 1 :(得分:1)
作者属于这本书。您必须在Book类的构造函数中声明它,以便只要该书存在就会存在。
您在方法中声明它,因此它仅在方法执行期间存在。
void Book::setAuthorName(string first, string last)
{
Author author;
...
}
这是一个范围问题。