C++ strings: [] vs. *
Mira el Excursión: Las matrices multidimensionales que describe cómo pasar matrices multidimensionales a funciones como argumentos. Basicially que desee cambiar su código en esto:
// same as void f(double (*a)[2]) {
void f(double a[][2]) {
}
int main() {
// note. this is not a pointer to a pointer,
// but an array of arrays (4 arrays of type double[2])
double var[4][2];
// trying to pass it by value will pass a pointer to its
// first element
f(var);
}
Todos menos los últimos dimensiones tienen que ser conocido por la función llamada. De lo contrario, la indexación de la matriz, el compilador no sería capaz de calcular la distancia correcta a los valores en su matriz (a [1] es sizeof(double[2])
bytes de distancia de un [0]).
Parece que desea poder aceptar la matriz sin saber el tamaño de las dimensiones. Puede utilizar plantillas para esto:
template<std::size_t N>
void f(double a[][N]) {
// N == 2 for us
}
int main() {
double var[4][2];
f(var);
}
El compilador hará una copia de (instantiate) esa plantilla para cada valor de N se utiliza con la función, auto-deducir la derecha N.
Gracias, me gusta el enlace que me diste ya que puedo obtener una visión más profunda desde allí. Y también el ejemplo de plantilla que me diste. double a [] [2] es exactamente lo que necesito en mi programa en particular. – Ezequiel