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

时间:2014-08-03 04:18:03

标签: c++ arrays class oop pointers

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

 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对象输入的所有数据。 我必须保持书籍和出版物之间的关系。

1 个答案:

答案 0 :(得分:1)

问题是您私下从Book继承Publication

class Book:private Publication

这意味着只有Book的实现知道它继承自Publication - 类外部的代码不知道这一点,因此您无法将Book强制转换为{ {1}}除了Publication(或朋友成员)的成员之外。

您可以通过公开继承来解决此问题:

Book