0

我正在开发 OOP C++ 程序,但我有点挣扎。我正在尝试创建一个程序来演示默认和非默认构造函数和指针的使用。我正在尝试先做默认构造函数。

所以我只能在一种方法中存储和检索局部变量。但是现在我必须将值传递给其他类(我想我必须),然后再次检索信息但几乎没有修改。

我可以像我一样将对象初始化为一个类,但是当我尝试检索对象时,它基本上只检索空白空间。如何正确地将对象传递给另一个类中的方法,然后将其取回?

任何指针?

书本.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();
}
4

2 回答 2

3

这部分不起作用

void Book::setAuthorName(string first, string last)
{
    Author author;

    author.setFirstName(first);
    author.setLastName(last);
}

因为在这个函数中你创建了一个本地对象,设置它的值,然后在函数退出时销毁它。Author如果要保留此作者信息,则需要在 Book 类中创建类的成员变量。

在你的 Book 类声明中,你需要这样的东西

class Book {
    Author m_Author;  // This is your member variable that you can store author data in

};

然后在你的setAuthorName函数中,设置m_Author而不是创建局部变量的值。这将保留成员变量中的值m_Author

于 2012-09-02T20:46:59.310 回答
1

作者属于本书。您必须在类 Book 的构造函数中声明它,这样只要书存在,它就会存在。

您在方法中声明它,因此它仅在方法执行期间存在。

void Book::setAuthorName(string first, string last)
{
    Author author;
    ...
}

这是一个范围问题。

于 2012-09-02T20:50:12.270 回答