Das Byte-Array (hier 'testPins') kann beliebig lang angegeben werden, dessen Größe ist ja dann zur Kompilierungszeit bekannt. Ich benötige nun innerhalb der Klasse ein weiteres Byte-Array (hier 'shiftReg'), welches die Größe des übergebenen Arrays besitzen muss.
Meine Frage lautet nun: Ist es möglich - und falls ja, wie? - das Array shiftReg bereits zur Kompilierungszeit zu reservieren/initialisieren ohne die Krücke über "new" gehen zu müssen?
Danke für den Denkanstoß
Auf die Idee das Template über die gesamte Klasse zu stülpen bin ich noch gar nicht gekommen. Leider "verkompliziert" das den Aufruf der Objekterstellung etwas, wobei der Teil "/ sizeof(testPins[0])" obsolet ist, der Wert ergibt im vorliegenden Fall immer 1.
Aber natürlich kannst Du das "/ sizeof(testPins[0])" weglassen. Kommt halt darauf an, wie flexibel und möglichst "fehlerunanfällig" Du den Code machen möchtest...
Da gebe ich dir vollkommen recht... "könnte" - kann es aber nicht, weil ich ja bei der Übergabe festgezurrt habe das 8-Bit-Zellen übergeben werden müssen. Also ist das ehr eine Verschlimmbesserung und Speicherverschwendung das Ganze dermaßen variabel zu gestalten.
Warum sollte ich auf die Idee kommen 16-, oder gar 32-Bit-Zellen in den Speicher zu stellen oder zumindest die Möglichkeit dazu zu geben, wenn 8 Bit zur Darstellung der benötigten Werte vollkommen ausreichend sind?
Im Idealfall verhindert dies das Codeverständnis des Programmierers - und als "AddOn" die Warnungen / Fehlermeldungen, die der Compiler einem um die Ohren haut
Ich verstehe natürlich deinen Ansatz, aber wenn das Array von vorn herein mit unsigned 8 Bit deklariert wird bist du eh in den Poppes gekniffen wenn du Werte außerhalb dieses Bereichs definierst.
Nachtrag/Edit:
Den const type qualifier von ArrayType entfernt um einen veränderlichen(none const) Type für das shiftReg Array zu erschaffen.
Denn das war ja eins der Ziele: shiftReg ohne new