简单的类在C ++中不起作用

时间:2014-08-24 05:48:10

标签: function class tostring

我对C ++中的类有疑问。我刚刚在我的书的帮助下写了我的第一堂课,练习如下:

写一本名称,作者和出版商的课本。在main中创建一个带有硬编码给定文本的对象。让本书通过使用ToString()函数来展示。不要将构造函数留空并使用this->指针。

我的编译器中有0个错误,但它没有显示任何内容并立即结束(我的程序),有人可以解释我做错了什么以及为什么编译器没有看到我的错误? 我也尝试在堆上创建一个对象,但也无法工作。

#include <iostream>
#include <string>
#include <sstream>

using namespace std;

class Book
{
private:
string name;
string author;
string publisher;

public:
Book(string name, string author, string publisher)
{
    this->name=name;
    this->author=author;
    this->publisher=publisher;
}

~Book(void)
{
}

string getName();
string getAuthor();
string getPublisher();
void setName(string name);
void setAuthor(string author);
void setPublisher(string publisher);
string toString();
};


string Book::getName()
{
return name;
}

string Book::getAuthor()
{
return author;
}

string Book::getPublisher()
{
return publisher;
}

void Book::setName(string name)
{
this->name=name;
}

void Book::setAuthor(string author)
{
this->author=author;
}

void Book::setPublisher(string publisher)
{
this->publisher=publisher;
}

string Book::toString()
{
stringstream ss;
ss << "Name of the book: " << name << endl;
ss << "Author of the book: " << author << endl;
ss << "The book has been published by: " << publisher << endl;
return ss.str();
}


int main()
{
Book b1=Book("The lone child","Bryan Addams", "Publishers INC");
b1.toString();

return 0;
}

3 个答案:

答案 0 :(得分:2)

你的程序运行正常。你只是不打印任何东西。你打电话

 b1.toString();

只返回一个字符串。尝试用

替换它
cout << b1.toString();

答案 1 :(得分:2)

你永远不会实际打印b1.toString()的返回值,所以当然没有输出。捕获toString();的返回值,然后将其打印起作用。

int main () {
  Book b1 = Book( "The lone child", "Bryan Addams", "Publishers INC");

  string s = b1.toString();

  cout << s << "\n";

  return 0;
}

或者直接打印,如:

int main () {
  Book b1 = Book( "The lone child", "Bryan Addams", "Publishers INC");

  cout << b1.toString() << "\n";

  return 0;
}

答案 2 :(得分:-1)

而不是在字符串ss.str函数中返回toString(), 你应该在那里打印。

string Book:toString(){
    ...
    cout << ss.str;
    ...
}