Angenommen, ich habe eine Elementmatrix im C-Stil
Code: Select all
typedef struct _RAW_DATA{
int a;
int b;
}RAW_DATA;
innerhalb einer Vorlagenklasse, die die Größe der Matrix definiert:
Code: Select all
template
struct ProcessedData{
typedef RAW_DATA INPUT_TYPE[TDim][TDim];
};
In der oben genannten Klasse benötige ich auch eine zweidimensionale Matrix derselben Größe, die verarbeitete Daten für jedes Element des INPUT_TYPE enthält, aber einige Elemente müssen konstant sein:
Code: Select all
template
struct ProcessedData{
...
struct ProcessedElem{
const int a1;
const int a2;
const int b1;
const int b2;
int otherValue1;
int otherValue2;
ProcessedElem(const RAW_DATA &RawData) : ... /*do member initialization*/ {}
};
ProcessedElem prcessedData[TDim][TDim]
};
Im Konstruktor von ProcessedData erhalte ich die Eingabematrix:
Code: Select all
template
struct ProcessedData{
...
ProcessedData(const INPUT_TYPE &Input)
: prcessedData{/*somehow forward each element of Input to the corresponding element*/}
{}
};
Ich habe ein sehr knappes Speicherbudget, auch Tricks wie std::array oder std::arrays kommen nicht in Frage,
ich möchte es wirklich so einfach wie möglich halten. Ich habe Zugriff auf C++20-Funktionen, aber wenn eine Lösung spätere Standards erfordert, könnte ich sie prüfen, wenn ich auf diese Standards zugreifen kann.