【问题标题】:How to call a part of a function not the whole function in somewhere?如何在某处调用函数的一部分而不是整个函数?
【发布时间】:2015-06-03 10:07:51
【问题描述】:

我正在尝试调用在其他地方的函数内部定义的条件,但我不知道这是否可能。 这个函数是一个类的成员:

  void CMainDlg::OnTcnSelchangeTab1(NMHDR *pNMHDR, LRESULT *pResult)
{
    int ii=M_TabCtrl1.GetCurSel();  

if(ii==0)
        {
         GetDlgItem....
         GetDlgItem....
        }
else if(ii==1)
   {
    ///GetDlgItem....
   ///GetDlgItem....
   }
else
  {
  ////
  }
  }
    // TODO: Add your control notification handler code here
    *pResult = 0;
}

我正在尝试在其他地方直接调用并执行以下循环,但我不知道如何。

if(ii==0)
    {
GetDlgItem....
GetDlgItem....
}

【问题讨论】:

  • 把它放在它自己的函数中并从两个地方调用它。 (不过,这不是一个循环。)
  • 请将您的代码放入函数中。然后从这两个地方调用该函数,然后宾果游戏就解决了您的问题:)。正如 Molddnilo 所说,它是一个条件而不是循环。此外,您可能需要将参数传递给函数。

标签: c++ function visual-c++ if-statement call


【解决方案1】:

如果你想从其他地方调用一段代码,你需要把它变成一个函数。然后你可以调用这个新函数两次:从原始代码位置,以及你想再次使用它的位置:

void your_function()
{
    // Your 'loop'
    // Note that 'if' is not a loop but a condition
    if(ii==0)
    {
        GetDlgItem....
        GetDlgItem....
    }
}

void CMainDlg::OnTcnSelchangeTab1(NMHDR *pNMHDR, LRESULT *pResult)
{
    ...
    your_function();
    ...
}

// Somewhere else, call it again:
void something_else()
{
    ...
    your_function();
    ...
}

【讨论】:

  • If you want to call a piece of code from somewhere else, you need to make it a functiongoto呢?
  • @Levi 通常goto 很糟糕。在某些情况下它可能很有用,但考虑到 OP 的问题水平,我 99% 确定他们需要一个函数。
  • 我知道goto 不好。我只是想纠正一个错误(you need to make it a function)。我认为更好的措辞是should 而不是need to
  • @Levi : goto 还不够糟糕,可以让您从函数外部进入函数中间...
【解决方案2】:

C++ 没有旧的 Fortran 概念 entry point 允许直接在过程中间进入。在 C++ 中,函数或方法只有一个入口点:它的开头。

最好有一个干净的结构:如果一段代码可以从不同的点调用,把它变成一个函数或方法,然后从你需要做的地方调用它。

【讨论】:

    猜你喜欢
    • 2016-05-13
    • 2011-05-30
    • 2014-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多