如何在C++中创建"例程"(无函数)

Ali*_*jas -4 c++

想象一下,我有一些指令使用/操作我的范围内的许多变量,并且这些指令需要在同一范围内重复多次.
有没有办法封装所有它们并只使用一条指令调用它们而不使用函数?例:

int main()
 {
 int contador = 0;
 float dato;
 queue<float> cola;
 // a lot of other variables

 RUTINA
  {
  contador++;
  cola.push(dato);
  // manipuling a lot of other variables
  cout<<"Se ha ingresado un nuevo dato: "<<dato;
  }
 ...
 ...
 // something happens
 RUTINA;
 ...
 ...
 // another thing happens 
 RUTINA;
 ...
 ...
 // another thing else happens
 RUTINA;
 ...
 ...
 }
Run Code Online (Sandbox Code Playgroud)

显然,尝试使用函数执行此操作不会很好(特别是如果我们在例程中操作许多变量).

更新:如果我在main()之外使用一个函数(内部不允许),它当然会工作,但是我必须发送所有变量如何引用参数...它与复制/粘贴几乎相同每次我需要时的rutine代码.

Che*_*Alf 7

这是一个通过引用捕获的lambda.

auto const rutina = [&]()
{
    contador++;
    cola.push(dato);
    cout<<"Se ha ingresado un nuevo dato: "<<dato;
};
Run Code Online (Sandbox Code Playgroud)

你这样使用它:

rutina();
Run Code Online (Sandbox Code Playgroud)

但这通常不是一个好主意.

更好地阅读定义命名函数,并将相关变量作为参数传递给此类函数.

  • 是否有人能够理解他们所要求的答案确实是一个有趣的问题.但是,我不确定它是否相关.;-) (6认同)
  • @AliRojas:C++ 11或更高版本.目前的标准是C++ 17. (3认同)
  • 技术上是正确的,但你确定OP可以理解吗? (2认同)