如下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());
}
}
C++ 類型轉換
關於C++中的類型轉換
C++類型轉換
----------------------同志你好,我是CSDN問答機器人小N,奉組織之命為你提供參考答案,編程尚未成功,同志仍需努力!