Wie wird ein einfacher Zeiger auf ein mehrdimensionales Array fester Größe umgewandelt?
Ich habe eine Funktion, die einen Zeiger auf ein Gleitkomma-Array nimmt. Aufgrund anderer Bedingungen weiß ich, dass der Zeiger tatsächlich auf eine 2x2- ODER 3x3-Matrix zeigt. (Tatsächlich wurde der Speicher ursprünglich als solcher zugewiesen, z. B. float M [2] [2].) Wichtig ist, dass ich diese Bestimmung im Funktionskörper und nicht als Funktionsargument vornehmen möchte.
void calcMatrix( int face, float * matrixReturnAsArray )
{
// Here, I would much rather work in natural matrix notation
if( is2x2 )
{
// ### cast matrixReturnAsArray to somethingAsMatrix[2][2]
somethingAsMatrix[0][1] = 2.002;
// etc..
}
else if(is3x3)
{ //etc...
}
}
Mir ist bewusst, dass ich Vorlagen und andere Techniken verwenden könnte, um dieses Problem besser anzugehen. Meine Frage ist wirklich, wie man eine solche Besetzung beim ### Kommentar macht. Arbeiten in C ++.