这就是我如何设置指向struct的指针。在运行时分段错误在第二行引发。 LoadedPDFInfo是Canvas名称空间
中的结构struct std::unique_ptr<Canvas::LoadedPDFInfo> pdfInfo;
pdfInfo->handle = ++currentPDFHandle;
pdfInfo->totalPageNum = FPDF_GetPageCount(doc);
答案 0 :(得分:3)
首先,std::unique_ptr
是class
而不是struct
,因此请删除struct
变量声明中的pdfInfo
前缀。你可能正在考虑这个问题:
std::unique_ptr<struct Canvas::LoadedPDFInfo> pdfInfo;
但即使使用实际struct
类型声明变量(或类型转换),您仍然不需要struct
前缀。 C需要,C ++没有。
其次,您的段错误正在发生,因为您只是声明了pdfInfo
变量,但它实际上并没有指向有效的LoadedPDFInfo
对象,因此使用->
运算符不是有效的操作。就像常规指针一样,std::unique_ptr
(以及std::auto_ptr
和std::shared_ptr
)必须指向某些内容才能访问某些内容&#39; s 成员。例如:
std::unique_ptr<Canvas::LoadedPDFInfo> pdfInfo(new Canvas::LoadedPDFInfo);