gpt4 book ai didi

c++ - 多态性 c++,试图访问从抽象基类派生的类的成员函数

转载 作者:行者123 更新时间:2023-11-30 01:45:44 25 4
gpt4 key购买 nike

所以我有 5 个类,

  1. 光盘
  2. DVD
  3. 书籍
  4. 项目
  5. 库存

My Item 类是一个抽象基类,cd、dvds 和书籍都是从它派生的。我的 Inventory 类有一个 Items 类型的指针数组,指向 cd、dvd 和书籍的对象。

这是数组:

Item* ptrItems[100];
int totalItems = 0`

下面是如何将一个对象分配给我的 Inventory 类中的数组:

ptrItems[totalItems++] =  new books(1000 + totalItems, quantity, tempTitle,tempAuthor, tempDesc, cost);

//我使用总项目作为计数器来跟踪索引

我遇到的问题是 ptrItems[totalItems] 不能访问派生类的成员函数,只能访问 Items 抽象类的成员函数。

例如:

ptrItems[i]->getQuantity() //works fine because getQuanty is a member function of abstract base class Item.

但是,

ptrItems[i]->getBookTile() // won't work
error C2039: 'getBookTile' : is not a member of 'Item'

如果我错了请纠正我,但这不是多态性吗?它应该有权访问派生类的公共(public)成员函数,对吧?

最佳答案

不,你想做的不是多态性。它实际上与多态性正好相反。

多态性使用您的基类接口(interface)来操作任何您的派生类,包括那些尚未编写的派生类。

例如,如果您希望您的项目有标题,您可以在基类中定义一个虚拟(可能是纯的)方法getTitle(),并在你的派生类。通过这种方式,您可以在不知道或不关心其确切类型的情况下获得您收藏中任何项目的标题。

关于c++ - 多态性 c++,试图访问从抽象基类派生的类的成员函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34172938/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com