c++类创建对象后调用类中成员函数编译提示cannot access private member declared in class 'Book'

#include
#include
using namespace std;
class Book
{
private:
Book();
string bookname;
string writer;
int qu,price;
public:
void getbookname(string n);
void getwho(string w);
void getpu(int i);
void getprice();
void showbook();
};

void Book::getbookname(string n)
{
bookname=n;
}
void Book::getwho(string w)
{
writer=w;
}
void Book::getpu(int i)
{
qu=i;
}
void Book::getprice()
{
price=(qu*10);
}
void Book::showbook()
{
cout<<"书名:"< }
int main()
{
Book B[5];
string n,w;
int i;
for(i=0;i {
cin>>n>>w>>i;
B[i].getbookname(n);
B[i].getwho(w);
B[i].getpu(i);
B[i].getprice();
}
Book *p[5];
p[5]&B;
for(i=4;i<0;i--)
(*p[i]).showbook;
return 0;
}

c++

3个回答

错误比较多,帮你修改了下,完整的程序:

#include<iostream>
#include<string>
using namespace std;
class Book
{
private:
    string bookname;
    string writer;
    int qu,price;
public:
    Book(){}
    void setbookname(string n);
    void setwho(string w);
    void setqu(int i);
    void setprice();
    void showbook();
};

void Book::setbookname(string n)
{
    bookname=n;
}
void Book::setwho(string w)
{
    writer=w;
}
void Book::setqu(int i)
{
    qu=i;
}
void Book::setprice()
{
    price=(qu*10);
}
void Book::showbook()
{
    cout<<"书名:"<<bookname<<"\t"<<"作者:"<<writer<<"\t"<<"price"<<price<<endl;
}
int main()
{
    Book B[5];
    string n,w;
    int i, p;
    for(i=0;i<=4;i++)
    {
        cin>>n;
        cin>>w;
        cin>>p;
        B[i].setbookname(n);
        B[i].setwho(w);
        B[i].setqu(p);
        B[i].setprice();
    }
    Book *pb = &B[4];
    for(i=4;i>=0;i--)
    {
        pb->showbook();
        pb--;
    }
    return 0;
}
weixin_43319854
Lucky-Mo 好嘞 看懂了 谢谢
大约一年之前 回复

Book();构造函数,实现代码没看到,而且应该放在public下面
p[5]&B;
应该是p[5] = &B[4];

p[i]).showbook;
这个也不对
应该是
p[i])->showbook();

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!