【发布时间】:2015-03-09 11:12:59
【问题描述】:
我正在尝试从 C++ 与 PDFCreator 交谈。在不同版本的网站上似乎有一个例子。但是示例中的某些内容让我担心(可能是因为我不是 COM 专家)...
PDFCreator::_clsPDFCreatorOptionsPtr opt = pdfObject->GetcOptions();
opt->UseAutosave = 1;
opt->UseAutosaveDirectory = 1;
opt->AutosaveDirectory = "c:\\temp\\";
opt->AutosaveFormat = 0; // for PDF
opt->AutosaveFilename = "gigi13";
pdfObject->PutRefcOptions(opt);
所以我得到一个指向 PDFCreator 选项的指针,将它们设置为我想要的,然后使用PutRefcOptions 在 PDFCreator 中设置选项。
所以我的愚蠢问题是,如果我有一个指向选项的指针,我不是直接设置它们,例如,opt->AutoSave = 1 吗?
或者PDFCreator::_clsPDFCreatorOptionsPtr 是否持有选项的副本?也许是因为PDFCreator::_clsPDFCreatorOptionsPtr 是一个智能指针,因此拥有选项的副本?
【问题讨论】:
-
不确定我是否理解您的困惑所在。一个指针指向一个对象。您在对象本身中设置值,除了让您访问对象之外,指针不会做任何事情。
-
现在我认为该对象存在于堆栈中,它不是“指向”PDFCreator。因此,我得到了选项的副本,更改它们,然后将它们“放回 PDFCreator”。
-
好的,我现在明白了。我们正在谈论两个不同的对象,一个由
pdfObject指向的原始对象和另一个由opt指向的对象,它是选项的副本。没有理由相信它们是同一个对象,因为您所做的修改需要保存。 -
是的,据我所知(现在!)。 opt 是一个智能指针,它创建 pdfObiect 内容的副本
标签: c++ pdf com pdf-generation