Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

342
Views
¿Cuál es la mejor forma (o estándar) de cambiar entre funciones?

El siguiente código C++ es una versión simplificada de lo que quiero hacer, solo para mostrar la estructura general.

En cada caso de la "función_primaria()" la estructura es idéntica:

función() + 2

Lo único que cambia es la función que se utiliza (función 1, 2, 3 o 4).

¿Existe una manera más eficiente de hacer esto para no estar "repitiendo" el código en cada caso? Gracias.

 #include <iostream> using namespace std; int function1(int a){ return a; } int function2(int b){ return b*b; } int function3(int c){ return c*c + c; } int function4(int d){ return 5*d; } int primary_function(int x, int selection){ switch(selection){ case(1): return function1(x) + 2; break; case(2): return function2(x) + 2; break; case(3): return function3(x) + 2; break; case(4): return function4(x) + 2; break; } } int main(){ cout << primary_function(6,1) << endl; cout << primary_function(6,2) << endl; cout << primary_function(6,3) << endl; cout << primary_function(6,4) << endl; return 0; }
over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

Puede usar una matriz de punteros de función de la siguiente manera:

 int primary_function(int x, int selection) { using fn_ptr_t = int (*)(int); static fn_ptr_t functions[] = { function1, function2, function3, function4 }; return functions[selection - 1](x) + 2; }

También puede usar std::function<int(int)> como el tipo de elemento de la matriz, lo que le permitiría usar lambdas, incluso con cierres, en la matriz en lugar de solo funciones con nombre.

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!