2015-12-09 16 views
0

我有一個像單選按鈕等控件的COblist。現在我想從該列表中創建一個CWnd *數組。COblist到數組

顯然我不能這樣做,Cwnd* controls[controllerList.GetSize()];,因爲數組需要一個常數值。 但是有沒有簡單的解決方法呢?

而通過簡單的我的意思是任何其他方式,然後創建一個小的常量值,填充數組,創建一個新的大小+常數值並複製內容等。

+0

使用'的std ::矢量'。實際上,爲什麼使用'COblist'而不是'std :: list'? – PaulMcKenzie

+0

我正在使用一個漂亮的舊系統,並沒有時間來改變這樣的事情。 – Mangs

+0

等待 - 這是一個*新問題,對嗎?即使在Visual Studio 6.0甚至5.0中也存在'std :: vector'類。如果你第一次遇到這個問題,你在改變什麼? – PaulMcKenzie

回答

0

使用std::vector<CWnd*>

#include <vector> 
//... 
std::vector<Cwnd*> controls(controllerList.GetSize()); 
//... 

你現在有CWnd*動態數組。另外,除非您維護遺留的MFC代碼,否則幾乎沒有理由在STL容器上使用MFC容器。例如,使用std::list而不是CObList。即使微軟不使用MFC的容器,在這種交換指出:

MFC Collection classes used only for backward compatibility

+0

*「即使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

+0

我會接受羅納德拉雷曼斯的話,正如上面的鏈接所述。 – PaulMcKenzie