Ich versuche, einen gemeinsamen Zeiger auf eine feste Größe Array in einem Vektor zu speichern, ich möchte einen gemeinsamen Zeiger verwenden, weil ich einen Zeiger auf das Array an eine andere Klasse weitergeben muss schreibe in das Array, und ich möchte mehr als ein Array haben, weil ich mehr Instanzen der Schreibklasse haben kann und jeder ein Array benötigt, um zu schreiben, sie werden eine Menge Daten in die Arrays schreiben, so dass sie nicht bewegt werden gute Wahl.Gemeinsame Zeiger auf Array in Vektor speichern
std::shared_ptr<char> sp(new char [MAX_LENGTH], std::default_delete<char[]>());
arrayVect.push_back(sp);
der Vektor wird als Klassenmitglied definiert wie:
std::vector< std::shared_ptr< char [ MAX_LENGTH ] > > arrayVect;
ich den Fehler bekommen:
error: no matching function for call to ‘std::vector<std::shared_ptr<char [MAX_LENGTH]> >::push_back(std::shared_ptr<char []>&)’
ich verschiedene Alternativen ausprobiert, aber keiner von ihnen gearbeitet haben, könnten Sie weisen auf die richtige Vorgehensweise hin? oder gibt es eine alternative, die mir fehlt? Die Schreibklasse benötigt ein Array von Zeichen für die Schreibfunktion, also denke ich, dass ich mit dem Array fest bin.
danke!
'std :: vector> arrayVect;' –
CinCout
Whould dass kein Vektor der gemeinsamen Zeiger auf ein einzelnes Zeichen sein? Was passiert, wenn ich etwas wie: * (arrayVect.at (0)) [1] oder etwas ähnliches zugreifen möchte? –
Nein, das ist kein Zeiger auf ein einzelnes Zeichen. Eigentlich zerfällt Array im Allgemeinen zu Zeigern. –