复制指针数组中动态创建的指针

copying a pointer created dynamically in array of pointers

本文关键字:指针 创建 动态 数组 复制      更新时间:2023-10-16

我是初学者,当我试图将一个指针复制到指针数组中的对象时,我遇到了问题。

 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;
    }
   };

Main Function

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类继承自publication private

  ptrpub[i]=ptr;         //'Publication' is an inaccessible base of 'Book'

是否有任何方法可以复制它们,所以我可以使用ptrpub[i]->putdata()来显示为book对象输入的所有数据。我必须保持Book和Publication类之间的关系

问题是您私下从Publication继承了Book:

class Book:private Publication

这意味着只有Book的实现知道它继承了Publication——类外部的代码不知道这一点,所以你不能将Book转换为Publication,除非从Book的成员(或朋友成员)中。

您可以通过公开继承

来解决这个问题:
class Book:public Publication