Esta pregunta se relaciona con la publicación here. ¿Es posible inicializar una matriz en una llamada de función o llamada de constructor? Por ejemplo, el constructor de class foo quiere una matriz de tamaño 3, por lo que quiero llamar a foo ({0, 0, 0}). Lo intenté y no funcionó. Me gustaría poder inicializar objetos de tipo foo en listas de inicialización de constructores de otros objetos, o inicializar foo sin crear primero una matriz separada. es posible?Inicialización de la matriz de C++ en llamada de función o llamada de constructor
Respuesta
No en el estándar actual. Será posible en C++ 11
En gcc puede utilizar un molde para forzar la creación de un temporal, pero no es C++ estándar (C99):
typedef int array[2];
void foo(array) {} // Note: the actual signature is: void foo(int *)
int main() {
foo((array){ 1, 2 } );
}
Esto funciona en C99, pero no en C++ 03 (ni en C++ 0x - este es un literal compuesto). –
El código está bien con (macports) gcc hasta 4.6; gcc 4.7 informa 'error: toma la dirección de la matriz temporal'. –
C++ 11 es el estándar actual, por lo que esta respuesta debe actualizarse. –
Si permitido por su diseño , puede considerar envolver los datos dentro de una clase y en el constructor predeterminado inicializar con 0 (o cualquier valor de su elección)
- 1. Método de instancia de llamada desde un constructor en C#
- 2. Constructor llamada
- 3. CoffeeScript: Expandir matriz en llamada de función
- 4. Anular una llamada de función en C
- 5. cómo rastrear llamada de función en C?
- 6. Llamada al constructor base de la plantilla en la lista de inicialización del miembro error
- 7. Convención de llamada personalizada X86_64 a C llamada a función
- 8. Llamada C# dll función de C++/CLI
- 9. C++ identificador de llamada de función
- 10. Cómo reenviar la llamada de constructor sobrecargada a otro constructor en C++/CLI
- 11. llamada al constructor de copia
- 12. asíncrona llamada de función para C++
- 13. C++ y destructor llamada de función para
- 14. Llamada de miembro virtual en el constructor
- 15. ¿Función de llamada de DLL?
- 16. devolución de llamada en C#, orden de llamada y devolución
- 17. llamada padre constructor en ruby
- 18. llamada de función virtual C++ versus boost :: llamada de función speedwise
- 19. llamada de función en la cláusula WHERE
- 20. función asíncrona llamada C++ 0x
- 21. Devolución de llamada en C#
- 22. C++ constructor de clase de llamada con argumentos calculados
- 23. obtienen llamadas nombre de la función de la función llamada
- 24. ¿Quitar llamada de constructor de delegado redundante?
- 25. C++: Pass matriz creada en la línea de llamada de función
- 26. llamada Súper Constructor
- 27. Llamada de función virtual pura
- 28. ¿Usar un constructor en una llamada a función?
- 29. ¿Cómo se encuentra la función de llamada?
- 30. C++: lista de inicialización del constructor para una matriz?
Primero habla de la inicialización de la matriz, y luego necesita inicializar un objeto de la clase. Entonces, ¿qué es lo que necesita inicializar: un objeto de matriz o un objeto de clase? – AnT
La inicialización de una clase es un caso específico que utilicé como ejemplo, y es la razón por la que hice la pregunta. Sin embargo, también podría tener una función foo que tome una matriz de tamaño 3 y desee llamarla como: foo ({0, 0, 0}). Cambié el OP para hacerlo más obvio. – david
Sí, pero aún se pregunta "¿Es posible inicializar una matriz sin asignarla?". Bueno, sí, es posible. Por ejemplo, 'int a [10] = {5}' inicializa una matriz sin asignarla, tal como lo pidió. Sin embargo, eso no se parece a lo que realmente parece interesarle. – AnT