我不知道为什么我的C ++课程不会打印出来

时间:2015-04-11 03:13:49

标签: c++ class

我是新编码并试图弄清楚为什么我的课程似乎不起作用。 我的程序需要创建4本书并从主程序中显示它们。

在过去的一天半里,我一直在摸不着头脑,认为我没有正确引用其中一个对象...我可以让我的代码编译但是它只是吐了数量庞大。



#include <string>
#include <sstream>
#include <iostream>
using namespace std;
class book
{
public:
    book(string bn, int pn);
    string getName();
    int getPageNum();
    void setName(string bookName);
    void setPageNum(int pNum);
    string bn;
    int pn;
	string bookName;
	int pNum;
};
book::book(string bookName, int pNum) //provides framework for final print/input
{
	bookName = bn;
	pNum = pn;
}
void book::setName(string bookName) //set book's name
{
    bookName=bn;
}
void book::setPageNum(int pNum) //set book's page number
{
    pNum=pn;
}
void print(book b) //printing function
{
    cout<<"Your book is called: "<< b.bookName <<", and you're on page: "<< b.pNum;
}
int main()
{
book b1 = book("The Odyssey", 5);
book b2 = book("To Kill a Mockingbird", 153);
book b3 = book("Pride and Prejudice", 88);
book b4 = book("The Great Gatsby", 17);
print(b1);
print(b2);
print(b3);
print(b4);
return 0;
}
&#13;
&#13;
&#13;

2 个答案:

答案 0 :(得分:1)

您交换了构造函数和其他成员函数中的赋值。 此外,不需要成员变量bookNamepNum。 这是固定代码:

#include <string>
#include <sstream>
#include <iostream>
using namespace std;
class book
{
public:
    book(string bn, int pn);
    string getName();
    int getPageNum();
    void setName(string bookName);
    void setPageNum(int pNum);
    string bn;
    int pn;

};
book::book(string bookName, int pNum) //provides framework for final print/input
{
    bn = bookName;
    pn = pNum;
}
void book::setName(string bookName) //set book's name
{
    bn = bookName;
}
void book::setPageNum(int pNum) //set book's page number
{
    pn = pNum;
}
void print(book b) //printing function
{
    cout<<"Your book is called: "<< b.bn <<", and you're on page: "<< b.pn<<endl;
}
int main()
{
book b1 = book("The Odyssey", 5);
book b2 = book("To Kill a Mockingbird", 153);
book b3 = book("Pride and Prejudice", 88);
book b4 = book("The Great Gatsby", 17);
print(b1);
print(b2);
print(b3);
print(b4);
return 0;
}

希望有所帮助:)

答案 1 :(得分:1)

分配值时会出现问题。一个例子:

void book::setName(string bookName) //set book's name
{
    bookName=bn;
}

请注意,您将参数传递为bookName,并且您的类中有一个名为bn的成员。您应该将bookName分配给bn,而不是相反。它应该是bn=bookName。您的许多功能都存在此问题。此外,成员pNum也是多余的。

修改后的(更正的)代码:http://ideone.com/Ha5Dhn