我不明白如何从一个类中的方法传递和检索变量到其他类中的其他方法

时间:2012-09-02 20:42:26

标签: c++ oop default-constructor

我正在研究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();
}

2 个答案:

答案 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;
    ...
}

这是一个范围问题。