c++中dynamic_cast的用

来源:互联网 发布:网络直播策划 编辑:程序博客网 时间:2024/06/06 00:42

惊恐c++中dynamic_cast的作用

#include<iostream>

#include<memory>
//Someone eles's code,eg.library
class IGlyph
{
virtual ~IGlyph(){}
virtual std::string Text() = 0;
virtual IIcon* Icon() = 0;
//...
};
class IWidgetSelector
{
public:
virtual ~IWidgetSelector(){}
virtual void AddItem(IGlyph*) = 0;
virtual IIcon *Selection() = 0;
};
//Your code
class MyItem:public IGlyph
{
public:
virtual std::string Text()
{
return this->text;
}
virtual IIcon* Icon()
{
return this->icon.get();


}
void Activate()
{
std::cout << "My Item Activated" << std::endl;
}
std::string text;
std::auto_ptr<IIcon> icon;
};


void SpiffyForm::OnDoubleClick(IWidgetSelector* ws)
{
IGlyph *gylph = ws->Selection();
MyItem *item = dynamic_cast<MyItem*>(gylph);
if (item)
item->Activate();

}


0 0
原创粉丝点击