如下Demo代码,我需要一个方法判断传入指针是什么类型
class IData
{
public:
IData(){}
virtual ~IData(){}
}
class CDataName : public IData
{
public:
string GetName(){ return name;}
private:
string name;
}
class CDataAlias : public IData
{
public:
string GetAlias(){ return alias;}
private:
string alias;
}
class CDataOperate
{
public:
CDataOperate(){}
~CDataOperate(){}
void MyOperate(IData *in_data)
{
//if IData is CDataName, return name.
//if IData is CDataAlias, return alias.
//IData 可能存在多个子类,什么办法可以优化下面的逻辑,希望可以达到立马判断出类类型的方法
CDataName *tmp_data = (CDataName *)in_data;
if( tmp_data != null)
{
return NotifData(tmp_data);
}
CDataAlias *tmp_data1 = (CDataAlias *)in_data;
if( tmp_data1 != null)
{
return NotifData(tmp_data);
}
}
private:
void NotifData(CDataName *in_pdata)
{
printf("%s\n", in_pdata->GetName().c_str());
}
void NotifData(CDataAlias *in_pdata)
{
printf("%s\n", in_pdata->GetAlias().c_str());
}
}