Ich entwerfe eine Klasse, die die Benutzermanipulationen in einer Software verfolgt, um frühere Anwendungszustände wiederherzustellen (d. H. STRG + Z/STRG + Y). Ich wollte gerne etwas über Aufführungen klären.Liste Speichern von Zeigern oder "einfaches Objekt"
Ich verwende den std::list
Container der STL. Diese Liste enthält nicht wirklich große Objekte, sondern eine signifikante Anzahl. Soll ich Zeiger verwenden oder nicht?
Zum Beispiel, hier sind die Arten von Objekten, die gespeichert werden sollen:
struct ImagesState
{
cv::Mat first;
cv::Mat second;
};
struct StatusBarState
{
std::string notification;
std::string algorithm;
};
Vorerst speichere ich das Ganze in Form von struct
Zeigern, wie zum Beispiel:
std::list<ImagesStatee*> stereoImages;
Ich weiß (denke ich), dass die Operatoren new
und delete
zeitaufwendig sind, aber ich möchte keinen Stapelüberlauf mit "normalem Objekt" erleben. Ist es ein schlechtes Design?
Pointers sind in der Regel nicht erforderlich, außer für Polymorphismus. Werte speichern (Objektinstanzen, keine Zeiger auf sie). Und denken Sie daran, dass "std :: vector" der "Standard-Container" sein sollte. –
Mit diesem gesagt, * wenn * Sie sowieso für Zeiger entscheiden, verwenden Sie die neuen Smartpointer, die in C++ 11 eingeführt wurde. –
@Someprogrammerdude 'Smart Pointer' ja aus Sicherheitsgründen. – Papipone