我有多个这样组织的控件:

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
  • 09-06 12:08