我有多个这样组织的控件:
deque<wxTextCtrl*> dequeEdit;
deque<wxStaticText*> dequeText;
deque<wxComboBox*> dequeCombo;
所有这些控件都继承自具有Mathod Show的wxWindow。我想一次显示(或隐藏)整个双端队列,而每个双端队列不需要多种方法。怎么做?
我在考虑为每个控件制作wxWindow的双端队列,因此我可以编写方法
ShowDeque(deque<wxWindow*> deque)
所以显示会很容易,但另一方面,如果我想与组合框,我必须将其键入回wxComboBox。
还有其他可能性吗?谢谢。
最佳答案
使用:
for_each(dequeEdit.begin(), dequeEdit.end(), mem_fun(&wxWindow::Show));
其他双端队列也一样。
或封装在一个函数中:
template <class Deque>
void showAll(const Deque& dequeObj)
{
using namespace std;
for_each(dequeObj.begin(), dequeObj.end(), mem_fun(&wxWindow::Show));
}
showAll(dequeEdit);
std::for_each
:http://en.cppreference.com/w/cpp/algorithm/for_each std::mem_fun
:http://en.cppreference.com/w/cpp/utility/functional/mem_fn