In C++ 17 std::shared_ptr
hat eine operator []
Indizierung vektorbasierte Zeiger (http://en.cppreference.com/w/cpp/memory/shared_ptr/operator_at)std :: shared_ptr operator [] gleichwertigen Zugang
ermöglichen Wie kann ich ähnliche zugreifenden erhalten, wenn eine solche Betreiber nicht verfügbar ist und ich noch will einen intelligenten Zeiger für eine Reihe von Elementen verwenden, wie zum Beispiel:
std::shared_ptr<unsigned char> data;
data.reset(new unsigned char[10]>;
// use data[3];
AFAIK pre C++ 17 Sie können kein Array in einem 'shared_ptr' eingeben. Im Moment haben Sie den falschen Deleter, der zu UB führt. – NathanOliver
@NathanOliver sicher OP kann, mit einem richtigen Deleter? (welches OP nicht zur Verfügung stellte). – user2079303
@ user2079303 Guter Punkt. Ich habe vergessen, einen benutzerdefinierten Deleter zu übergeben. – NathanOliver