我有什么:
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/