c++ - 通过指针访问派生类

标签 c++ oop pointers

我有什么:

class Item {} ;

class ChristmasItem : public Item
{
private:
string color;

public: get_color() { return color;} 

class Store{
Item* item1;
} ;

现在,如果那个 Item *item1 是一个 ChristmasItem,我想检查它的颜色。我试过了

if (dynamic cast <ChristmasItem*> item1! =NULL) item1->get_color() ; 

没有成功。你能给我什么建议吗?

最佳答案

您的代码未正确使用 dynamic_cast。您必须定义一个您计划存储转换的所需类型的变量。

ChristmasItem *thisItem = dynamic_cast<ChristmasItem*>(item1);

然后:

 if (thisItem != nullptr) thisItem->getColor();

请注意,运行时类型信息 (RTTI) 是运行时所必需的,并且必须在某些开发环境中启用。

关于c++ - 通过指针访问派生类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41388395/

相关文章:

c++ - GDI+:绘制位图时出现未处理的异常

java - 使用两个接口(interface)声明变量

javascript - Phaser 3 中的 "this"指的是什么?

c - 何时为结构内的数组使用 malloc() 内存

c++ - 如何在运行时简化代码生成?

c++ - 连接到 C 中的主机

c++ - 为什么链表中的节点不能负责删除自己? (C++)

java - Java 数组是类实例吗?

c - 如何将 "const char * "的内容写入文本文件?

c - 指向 C 中结构表的指针