所以我使用默认构造函数将单个条目插入内存,然后通过调用getBookInfo()
方法读取它们。当我尝试仅使用一个变量进行测试运行时,即使我在插入数据后调用getBookInfo()
,我也没有得到任何内容。
为什么?
Main.cpp的
#include <iostream>
using namespace std;
#include "Book.h"
void main()
{
Book book;
book.setTitle("Advanced C++ Programming");
book.setAuthorName("Linda", "Smith");
book.setPublisher("Microsoft Press", "One Microsoft Way", "Redmond");
book.setPrice(49.99);
book.getBookInfo(); // <-= this should be output
int i;
cin >> i;
};
Book.cpp
#include <iostream>
#include <sstream>
using namespace std;
#include "Book.h"
Book::Book()
{
}
void Book::setTitle(string title)
{
title = title;
}
void Book::setPrice(double price)
{
price = price;
}
string Book::convertDoubleToString(double number)
{
return static_cast<ostringstream*>( &(ostringstream() << number) ) -> str();
}
// this should be output
string Book::getBookInfo()
{
stringstream ss;
ss << title << endl << convertDoubleToString(price) << endl;
return ss.str();
}
答案 0 :(得分:3)
更改
void Book::setTitle(string title)
{
title = title;
}
到
void Book::setTitle(string title)
{
this->title = title;
}
并且在这种代码出现的地方也会发生同样的变化。如上所述,代码将参数title
的值分配给参数title
,即它什么都不做。编译器可能会警告你这件事。
或者,正如@hmjd所说,更改参数的名称。
答案 1 :(得分:2)
您需要捕获从getBootInfo()返回的数据,例如
string result = book.GetBookInfo();
cout << result;