En C++ 11 puedes. Una nota de antemano: No new
la matriz, no hay necesidad de eso.
Primero, string[] strArray
es un error de sintaxis, que debe ser string* strArray
o string strArray[]
. Y supongo que es solo por el ejemplo que no pasa ningún parámetro de tamaño.
#include <string>
void foo(std::string* strArray, unsigned size){
// do stuff...
}
template<class T>
using alias = T;
int main(){
foo(alias<std::string[]>{"hi", "there"}, 2);
}
Tenga en cuenta que sería mejor si usted no necesita pasar el tamaño de la matriz como un parámetro adicional, y afortunadamente hay una manera: plantillas!
template<unsigned N>
void foo(int const (&arr)[N]){
// ...
}
Tenga en cuenta que esto solo coincidirá con matrices de pila, como int x[5] = ...
. O temporales, creados por el uso de alias
anterior.
int main(){
foo(alias<int[]>{1, 2, 3});
}
¿por qué usaría arreglos de estilo c dinámicamente asignados? Sugeriría que usara 'std :: vector' en su lugar. Al usar C++ 11, puede construirlos usando listas de inicialización, p. 'void foo (vector); foo ({"hi", "there"}); 'debería funcionar en C++ 11 –
Grizzly