0

次の例から以下を翻訳しようとしています SplitContainer Splitter Gets Focus Rectangle?

private: Control getFocused(Control::ControlCollection controls)
{
    //foreach (Control c in controls)
    //{
    //  if (c.Focused)
    //  {
    //      // Return the focused control
    //      return c;
    //  }
    //  else if (c.ContainsFocus)
    //  {
    //      // If the focus is contained inside a control's children
    //      // return the child
    //      return getFocused(c.Controls);
    //  }
    //}
    do
    {
            if (c.Focused)
            {
                // Return the focused control
                return c;
            }
            else if (c.ContainsFocus)
            {
                // If the focus is contained inside a control's children
                // return the child
                return getFocused(c.Controls);
            }
    }
    while(Control c in controls);
   // No control on the form has focus
   return null;
}

DO WHILE ループに適したシンセザンクスを探しています

while(Control c in controls); // error

関数 ' private: Control getFocused(Control::ControlCollection controls)' は Control 型であるため、戻り値を指定する必要があります。' return null;' と ' return nullptr;' の両方が失敗します。

編集:

for(int index = 0; index <= controls.Count; index++)
        {
            if(controls[index]->Focused)
            {
                return controls[index];
            }
            else if (controls[index]->ContainsFocus)
            {
                return getFocused(controls[index]->Controls);
            }
        }

return controls[index];-> "System::Windows::Forms::Control ^" から "System::Windows::Forms::Control" への適切なユーザー定義の変換が存在しません。

return getFocused(controls[index]->Controls);->関数 "getFocused" は、指定された引数リストで呼び出すことはできません。引数の型は次のとおりです: (System::Windows::Forms::Control::ControlCollection ^)

return null;->識別子「null」は定義されていません

また

return nullptr;-> "decltype(nullptr)" から "System::Windows::Forms::Control" への適切なユーザー定義の変換が存在しません

4

2 に答える 2

0

MD.Unicorn は、「foreach」の C++ 構文がないという点で技術的に正しいです。ただし、C++ には、STL に非常によく似たものが含まれています (適切な C# ではなく、.net フレームワークを考えてください)。

C++ STL for_each

for_each(foo.begin(), foo.end(), [=](Control control){
    //Stuff
});
于 2013-03-18T08:25:17.277 に答える