Zuerst std::unique_ptr
ist ein class
kein struct
, so der auf der pdfInfo
Variablendeklaration struct
Präfix loszuwerden. Sie dachten wohl dieser Stelle:
std::unique_ptr<struct Canvas::LoadedPDFInfo> pdfInfo;
Aber selbst wenn das Deklarieren von Variablen (oder Typ-Casting) tatsächliche struct
Typen verwenden, können Sie die struct
Präfix noch nicht brauchen. C benötigt das, C++ nicht.
Zweitens Ihre segfault geschieht, weil Sie lediglich den pdfInfo
Variable deklariert haben, aber es ist nicht wirklich an einem gültigen LoadedPDFInfo
Objekt zeigt, so den ->
Operator ist keine gültige Operation. Genau wie ein normaler Zeiger, std::unique_ptr
(und std::auto_ptr
, und std::shared_ptr
) müssen Punkt auf etwas, um auf zugreifen, dass etwas ist Mitglieder. Zum Beispiel:
std::unique_ptr<Canvas::LoadedPDFInfo> pdfInfo(new Canvas::LoadedPDFInfo);
C++ ist nicht C ist nicht C++! – Olaf
@Olaf hast du eine antwort darauf? – asad
Wie würde ich? Die Kristallkugel ist neblig und ich bin kein Hellseher. Siehe [fragen]. – Olaf