我是初学者,在尝试将一个指针复制到指针数组中的对象时,我遇到了问题。
class Publication
{
char title[20];
int idd;
public:
char* getT()
{
return title;
}
virtual void getData()
{
cout<<"Enter Title of Book";
cin>>title;
cout<<"Enter ID of Book";
cin>>idd;
}
virtual void putData()
{
cout<<"Title of Book : "<<title<<"\n";
cout<<"ID of Book : "<<idd;
}
};
class Book:private Publication
{
int pages;
public:
void getData()
{
cout<<"Enter Title of Book";
cin>>getT();
cout<<"Enter Pages ";
cin>>pages;
}
void putData()
{
cout<<"Title of Book : "<<getT()<<"\n";
cout<<"No of Pages : "<<pages;
}
};
主要功能
int main()
{
Publication *ptrpub[2];
Book *ptr;
for(int i=0;i<2;i++)
{
cout<<"Enter Data for Book Object";
ptr=new Book;
ptr->getData();
现在在这个循环中,我希望将该指针移动到一个指向发布的指针数组中,即ptrpub [],其中Book类继承自Private Publication
ptrpub[i]=ptr; //'Publication' is an inaccessible base of 'Book'
有没有办法复制它们,所以我可以使用ptrpub [i] - &gt; putdata()来显示为book对象输入的所有数据。 我必须保持书籍和出版物之间的关系。
答案 0 :(得分:1)
问题是您私下从Book
继承Publication
:
class Book:private Publication
这意味着只有Book
的实现知道它继承自Publication
- 类外部的代码不知道这一点,因此您无法将Book
强制转换为{ {1}}除了Publication
(或朋友成员)的成员之外。
您可以通过公开继承来解决此问题:
Book