einzustellen Ich mache ein Projekt, das einige Pascal (Delphi) -Code in C++ konvertiert und möchte eine Funktion schreiben, die in etwa dem Pascal "SetLength" entspricht Methode. Dies bezieht sich sowohl auf ein dynamisches Array als auch auf eine Länge und weist den Speicher zu und gibt die Referenz zurück.Eine generische Methode, um die Länge eines dynamischen Arrays beliebigen Typs in C++
In C++ Ich ist
void* setlength(void* pp, int array_size, int pointer_size, int target_size, ....) {
void * p;
// Code to allocate memory here via malloc/new
// something like: p = reinterpret_cast<typeid(pp)>(p);
// p=(target_size) malloc(array_size);
return p;
}
Meine Frage nach dem Vorbild der
von etwas denken dies: Gibt es einen Weg, um den Zeigertyp auf eine Funktion wie diese passieren und den Speicher erfolgreich zuweisen zu (vielleicht über ein Typid-Parameter?)? Kann ich<reinterpret_cast>
irgendwie? Das ultimative Ziel wäre so etwas wie die folgenden in Bezug auf die Nutzung sein:
float*** p;
p=setlength(100,sizeof(float***),sizeof(float**),.....);
class B;
B** cp;
cp=setlength(100,sizeof(B**),sizeof(B*),.....);
Jede Hilfe sehr willkommen sein würde. Ich bin mir bewusst, dass mein vorgeschlagener Code falsch ist, wollte aber die allgemeine Idee vermitteln. Vielen Dank.
Ich würde sicherlich nicht sagen, Monstrositäten, sie geben eine viel intuitivere Zugriff auf mehrdimensionale Datenstrukturen. Davon abgesehen, können Sie etwas Leistung im Vergleich zu einer linearen Dimension, auf die zugegriffen wird, zuerst verlieren. – DeusAduro
Dies ist, was ich im Moment benutze, aber fragte mich, ob es eine Möglichkeit gäbe, alle Ausnahmeregelungen an einer Stelle bei der Zuweisung zu platzieren. Meine Anwendung verwendet viele 3D-Arrays, wo dreifache Indirektion (leider) notwendig ist –
viel intuitiver als was? – jalf