C++book类,查找时,出现逻辑错误,可能与指针有关

来源:百度知道 编辑:UC知道 时间:2024/05/07 23:57:23
#include<iostream>
using namespace std;
#include<string>
struct books
{
int num;//库存
string name;//书名
char ar();//作者
int money;//价格
string pulisher;//出版社
int code;//编号
books *next;
};

class book
{
books *p;
public:
void inbook()
{
p=NULL;
}
void cbook(string n,string p,int m,int c,int v)
{
books *pb=new books;
pb->code=c;
pb->money=m;
pb->name=n;
pb->pulisher=p;
pb->num=v;
p=pb->next;//这两行去掉,能运行但有逻辑错误
p=pb;
}
void inputbook()
{
string name;
string pulisher;
int money;
int code;
int num;
cout<<"输入书名 出版社 价格 编号 库存:";
cin>>name>>pulisher>>money>>code>>num;
cin.ignore (100,'\n');

主要有三处错误,下面都给你标释出来了

#include<iostream>
using namespace std;
#include<string>
struct books
{
int num;//库存
string name;//书名
char ar();//作者
int money;//价格
string pulisher;//出版社
int code;//编号
books *next;
};

class book
{
books *p;
public:
void inbook()
{
p=NULL;
}
void cbook(string n,string q,int m,int c,int v)
{
books *pb=new books;
pb->code=c;
pb->money=m;
pb->name=n;
pb->pulisher=q; //把这个参数改成了q,否则与指针p重复定义了
pb->num=v;
pb->next=p;//节点插入错误
p=pb;
}
void inputbook()
{
string name;
string pulisher;
int money;
int code;
int num;
cout<<"输入书名 出版社 价格 编号 库存:";
cin>>name>>pulisher>>money>>code>>num;
cin.ignore (100,'\n');
cbook(name,pulisher,mon