我有一個像單選按鈕等控件的COblist。現在我想從該列表中創建一個CWnd *數組。COblist到數組
顯然我不能這樣做,Cwnd* controls[controllerList.GetSize()];
,因爲數組需要一個常數值。 但是有沒有簡單的解決方法呢?
而通過簡單的我的意思是任何其他方式,然後創建一個小的常量值,填充數組,創建一個新的大小+常數值並複製內容等。
我有一個像單選按鈕等控件的COblist。現在我想從該列表中創建一個CWnd *數組。COblist到數組
顯然我不能這樣做,Cwnd* controls[controllerList.GetSize()];
,因爲數組需要一個常數值。 但是有沒有簡單的解決方法呢?
而通過簡單的我的意思是任何其他方式,然後創建一個小的常量值,填充數組,創建一個新的大小+常數值並複製內容等。
使用std::vector<CWnd*>
:
#include <vector>
//...
std::vector<Cwnd*> controls(controllerList.GetSize());
//...
你現在有CWnd*
動態數組。另外,除非您維護遺留的MFC代碼,否則幾乎沒有理由在STL容器上使用MFC容器。例如,使用std::list
而不是CObList
。即使微軟不使用MFC的容器,在這種交換指出:
*「即使Microsoft不使用MFC容器」* - 一個直言不諱的陳述。也是錯的。 MFC容器在整個MFC中使用,並且它們也在界面上表面化(例如[CDocTemplate :: GetFirstDocPosition](https://msdn.microsoft.com/en-us/library/c62hz68d.aspx)和[CDocTemplate :: GetNextDoc](https://msdn.microsoft.com/en-us/library/48a8a7at.aspx))。 – IInspectable
我會接受羅納德拉雷曼斯的話,正如上面的鏈接所述。 – PaulMcKenzie
使用'的std ::矢量'。實際上,爲什麼使用'COblist'而不是'std :: list'? –
PaulMcKenzie
我正在使用一個漂亮的舊系統,並沒有時間來改變這樣的事情。 – Mangs
等待 - 這是一個*新問題,對嗎?即使在Visual Studio 6.0甚至5.0中也存在'std :: vector'類。如果你第一次遇到這個問題,你在改變什麼? – PaulMcKenzie