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