我回來了一個愚蠢的問題.. :)C++類面膜和遺產
在C++中,我想做到以下幾點:
class dataproject : public data
{
public:
dataproject();
~dataproject();
virtual wxString GetComment(void);
private:
wxString m_comment;
};
class listproject : public listdata
{
public:
listproject();
~listproject();
bool Load();
};
(one of the function of listproject)
{
dataproject data;
data.SetComment("blablabla");
m_list.push_front(data);
}
class dataclient : public data
{
public:
dataclient();
~dataclient();
};
class listclient : public listdata
{
public:
listclient();
~listclient();
bool Load();
};
class data
{
public:
data();
virtual ~data();
wxString GetName(void);
protected:
wxString m_name;
};
class listdata
{
public:
data * GetById(unsigned int id);
protected:
std::list<data> m_list;
};
手段,我有包含兩個類數據,然後兩個類爲每個和一個母類加載列表以列出列表類的數據。
我的解釋是相當黑紗,但我不知道該怎麼解釋呢?
如果我打電話GetName
,沒問題,我得到我的數據。 如果我撥打GetComment
,程序崩潰。我試圖做一些事情:
dataproject * listproject::GetById(unsigned int id)
{
return (dataproject*) listdata::GetById(id);
}
但它也崩潰。
我相信有一種方法可以做我想做的事,訪問子類的功能。
編輯: 爲了更清楚地說明,我將異類數據存儲在一個列表中,這些異構數據是與母類相關的兩個子類。當我回到我的列表中的一個條目時,我希望能夠訪問位於子類上的函數。
class child A : Mother
class child B : Mother
class Mother
list<Mother> datalist
datalist->function_of_child_B
我真的不明白你的問題!也許你可以發佈一個完整的可編譯示例來演示這個問題? (見http:// sscce。org /) –
你的類'listclient'和'listproject'是相同的,除了name和你的類'dataclient'似乎沒用。那真的是你想要的嗎? –
我截斷了代碼,因爲它太長而無法在此處發佈。這顯然是我的問題不明確,我會嘗試重新格式化它 – Damien