gpt4 book ai didi

c++ - 具有多个指针的 Pimpl

转载 作者:行者123 更新时间:2023-11-30 02:45:06 34 4
gpt4 key购买 nike

我正在开发一个小型 IO 库,其中接口(interface)的要求是已知的,但实现可能会发生变化。该库应该以存档格式读取和写入文件,并存储一些元数据。

我考虑过使用 pimpl,因为它似乎非常适合这项任务。我的问题是是否可以将实现拆分为两个文件,如下例所示:

class Writer
{
private:
class WriterImpl; // Currently writes ZIP archives, but this can change
std::unique_ptr<WriterImpl> m_writerimpl;
class MetaImpl; // Currently uses XML
std::unique_ptr<MetaImpl> m_metaimpl;
}

那还在用pimpl模式吗?或者有一个指向 WriterImpl 类的指针会更好,然后该类将包含指向 ZipWriterXMLWriter 的指针?

最佳答案

Is that still using the pimpl pattern?

嗯;绝对没有。 pimpl 是关于隐藏关于你的实现的所有细节,除了你有一个 - 使用两个 impl 指针你揭示你有两个独立的实现类,如果你将来改变这个细节,你将强制包含者重新编译(pimpl 试图避免的几件事之一)。

但这并不必然意味着您不应该这样做。模式和习语的应用应该是务实的而不是墨守成规的——它们的存在是为了为您服务,而不是相反!因此,请仔细考虑并在您的应用程序的更广泛上下文中做任何有意义的事情。

关于c++ - 具有多个指针的 Pimpl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24803314/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com