我有以下類:集裝箱,元,然後偶聯的類,繼承元件,例如。 按鈕,輸入,等...多態性和指針的數組(C++)
添加元素,集裝箱陣列時,我有一個問題,我的主要()看起來是這樣的:
Container c;
c.Add(Button(...));
c.Add(Input(...));
其中「...」有一些構造參數。
在容器類我有一個數組的指針來存儲屬於該容器中的所有元素:
Element ** elements;
但我遇到的問題是如何實現Add方法,我希望的東西像這樣將工作:
void Add(const CControl & newElement){
elements[elemCnt++] = &newElement;
}
(元件陣列被分配:元素=新的Element * [100];)
但是我正在此編譯錯誤:
main.cpp: In member function ‘Container& Container::Add(const Element&)’:
main.cpp:138:23: error: invalid conversion from ‘const Element*’ to ‘Element*’
當我刪除const限定符時,出現編譯錯誤,說沒有合適的候選人。
事情是,我對C++中的多態性和繼承是新的,所以我可能會錯誤的解決這個問題。什麼是最好的方法呢?
PS:主要的方法必須看起來一樣,也不建議任何向量或STL的東西。
使用STL有什麼問題?你爲什麼不想用它?它讓生活變得如此簡單 – 2012-04-07 13:17:52
您在這裏犯了一個重大錯誤,那就是使用_temporary_變量的地址並將其存儲。 「Add」的參數只是暫時的,在通話結束後對象將被銷燬。除此之外,我同意@TonyTheLion,爲什麼不使用非常好的標準容器? – 2012-04-07 13:20:44
可能是這樣,我需要複製元素並存儲動態分配副本的地址。 我不能使用STL,因爲它是在沒有STL的情況下在環境中測試的分配。 – Smaug 2012-04-07 13:28:33