我有的:

class Item {} ;

class ChristmasItem : public Item
{
private:
string color;

public: get_color() { return color;}

class Store{
Item* item1;
} ;


现在,如果该项目* 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)是此项工作所必需的,并且必须在某些开发环境中启用。

08-05 10:06