Esa es la pregunta.¿Algo parecido a los parametros de C# en C++?
Respuesta
Para C++ no administrado con la misma sintaxis conveniente, no.
Pero existe soporte para variable argument lists para funciones en C++.
Básicamente usted declara una función con el último parámetro siendo un punto suspensivo (...), y dentro del cuerpo de la función utiliza las llamadas va_start()/va_arg() para analizar la lista de parámetros suministrados.
Este mecanismo no es de tipo seguro, y la persona que llama puede pasar nada, por lo que claramente debe documentar la interfaz pública de la función y lo que espera para ser aprobada en.
Para código administrado C++, véanse los comentarios de Reed .
Sí. En C++ estándar, puede usar va_arg y la ... sintaxis. Ver MSDN for details.
Para C++/CLI, hay un acceso directo para esto.
Esto se hace como:
void TheMethod(String^ firstArgument, ... array<Object^>^ variableArgs);
Ver este blog post for details.
Es bueno saber sobre eso ... no era consciente C++ tenía esta extensión para código administrado – LBushkin
@LBushkin: actualizado con la mejor sintaxis. –
Hay una biblioteca named parameters en boost (si entiendo correctamente qué params en C# son). Permite escribir funciones como esta:
int y = lib::f(_name = "bob", _index = 2);
No se puede decir nada sobre si hay una sobrecarga significativa involucrada.
C# params no se llama params, son listas de argumentos de longitud variable. –
Hoy en día, con la moderna C++, puede utilizar prácticas modernas de seguridad de tipo para funciones variadas.
utilizar cualquiera de las plantillas variadic o std :: initializer_list si todos sus argumentos tienen el mismo tipo
Con plantilla variadic, que utilizar la recursividad para ir a través de una lista de parámetros variadic. Variadic plantilla de ejemplo:
template<class T>
void MyFoo(T arg)
{
DoSomething(arg);
}
template<class T, class... R>
void MyFoo(T arg, R... rest)
{
DoSomething(arg);
// If "rest" only has one argument, it will call the above function
// Otherwise, it will call this function again, with the first argument
// from "rest" becoming "arg"
MyFoo(rest...);
}
int main()
{
MyFoo(2, 5.f, 'a');
}
Esto garantiza que si HacerAlgo, o cualquier otro tipo de código se ejecuta antes de que la llamada recursiva a myFoo, tiene una sobrecarga para el tipo de cada argumento que se pasa a la myFoo función, que la sobrecarga exacta ser llamado.
Con std :: initializer_list, se utiliza un simple bucle foreach que pasar por los argumentos
template<class T>
void MyFoo(std::initializer_list<T> args)
{
for(auto&& arg : args)
{
DoSomething(arg);
}
}
int main()
{
MyFoo({2, 4, 5, 8, 1, 0}); // All the arguments have to have the same type
}
Cabe destacar que también puede combinar 'static_assert' y plantillas variadic para hacer su propia lista flexible de inicializadores. F.ex. puede combinar 'std :: is_base_of' con static_assert en' T' en su ejemplo para asegurarse de que todos los tipos sean derivados de una cierta clase base. – atlaste
- 1. C++ literales vectoriales, o algo parecido
- 2. ¿Algo parecido a Hibernate en PHP?
- 3. ¿Algo parecido a git-svn para Perforce?
- 4. ¿Algo parecido a MySQL Proxy para PostgreSQL?
- 5. ¿Algo parecido a una función/método en archivos por lotes?
- 6. ¿Hay algo parecido a un violín para C++ y otros idiomas?
- 7. Creando algo imprimible en C#
- 8. ¿Algo parecido al Servidor VisualSVN para Mercurial?
- 9. Obligando a destruir algo pasado en C++
- 10. Algo similar a jMonkey Engine para C#
- 11. C# - MyClass.MyProperty [algo]
- 12. ¿Es posible en java hacer algo parecido a Comparator pero para implementar personalizados equals() y hashCode()
- 13. Vuelva a escribir algo de código C# genéricos en F #
- 14. ¿Hay algo así como var_dump de PHP en c/C++?
- 15. ¿Los contratos de código C# 4.0 realmente hacen algo?
- 16. Mapeo <C-j> a algo en Vim
- 17. Algo similar a C# .NET Lista genérica en java
- 18. ¿Hay algo similar a LINQ en Objective-C?
- 19. ¿Java tiene algo similar a las propiedades de C#?
- 20. performSelectorInBackground con múltiples parametros
- 21. llamando a los métodos C++ desde C
- 22. Objeto parecido a JavaScript en la biblioteca estándar de Python?
- 23. Rails 3 enrutamiento - pasar parametros de routes.rb
- 24. ¿Algo parecido al soporte de buffer/ventana de Emacs para Eclipse?
- 25. Pasando los parámetros a los informes de cristal en C#
- 26. duda con respecto a los operadores en C/C++/Java
- 27. C: Hacer algo cuando el programa sale
- 28. tubería XSLT eficiente, con parametros, en Java
- 29. C++ equivalente a los docámenes de Python?
- 30. Puntero C++ a los objetos
¿Puede usted decirnos C++ programadores lo que Hombre con "C#" params? –
@ JohannesSchaub-litb es la palabra clave [params] (https://msdn.microsoft.com/en-us/library/w5zay9db.aspx) – jxramos