默认情况下构造函数插入数据后,我没有得到任何输出,但我不确定为什么不

I'm not getting any output after I have inserted data by default constructor but I'm not sure why not

本文关键字:任何 输出 为什么不 不确定 构造函数 情况下 插入 数据 默认      更新时间:2023-10-16

所以我使用默认构造函数将各个条目插入内存,然后通过调用getBookInfo()方法读取它们。当我尝试只使用一个变量进行测试运行时,即使在插入数据后调用getBookInfo(),我也不会得到任何结果。

为什么?

主要.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();
}

更改

void Book::setTitle(string  title)
{
    title = title;
}

void Book::setTitle(string  title)
{
    this->title = title;
}

无论这种代码发生在哪里,都会发生同样的变化。正如所写的,代码将参数title的值分配给参数title,即它什么也不做。编译器可能警告过你这一点。

或者,正如@hmjd所说,更改参数的名称。

您需要捕获从getBootInfo()返回的数据,例如

string result = book.GetBookInfo();
cout << result;