为什么 = 默认成员初始值设定项请求 unique_ptr 析构函数的实例化,而 {} 则不然?
这是这个问题的后续内容: Does PIMPL idiom 实际上可以使用 std::unique_ptr? 完整示例使用多个文件,所以为了这个问题我在这里减少一下。完整的工作…
如何从 pimpl 类调用调用者类的复制构造函数?
我只需要知道如果我想从 pImpl 类调用我的复制构造函数,我该怎么做? 例如: CImpl::SomeFunc() { //cloning the caller class instance caller = ne…
将 pImpl 指针转换回调用者类型
我在程序中使用 pimpl idiom,但我被困在一个地方。我的代码 Class* Class::GetP() { return ClassImpl->GetP(); } 在我的 ClassImpl->GetP() 中, Cl…
PIMPL 习惯用法真的在实践中使用吗?
我正在阅读 Herb Sutter 的《Exceptional C++》一书,在那本书中我了解了 PIMPL 习惯用法。基本上,这个想法是为类的私有对象创建一个结构,并动态分…
GotW #101“解决方案”是否有效?真的能解决什么问题吗?
首先阅读 Herb 的 Sutters GotW 帖子,涉及 C++11 中的 pimpl: GotW #100:编译防火墙(难度: 6/10) GotW #101:编译防火墙,第 2 部分(难度:8/10…
模板中的 pimpl-idiom;哪个智能指针?
我通常对 pimpl 使用 boost::scoped_ptr (出于一个原因,因为如果我忘记处理复制构造函数,我不会感到惊讶) 但是使用模板,我不能只将析构函数放在 …
便携式 c++结盟?
我想将 Pimpl 惯用法与本地存储惯用法一起应用: mytype.h class mytype { struct Impl; enum{ storage = 20; } char m_storage[ storage ]; Impl* PI…
避免泄漏 C++ 中的外部类型班级
我在标头中定义了一个类,如下所示(缩写): class CairoRenderer { public: CairoRenderer(); ~CairoRenderer(); ... protected: cairo_t* m_contex…
PIMPL、POD、实现类的可见性,它的析构函数会被调用吗?
维基百科声称,在 有关不透明指针的文章中,那个 d 指针是类的唯一私有数据成员,指向结构体的实例(该结构体必须是 POD,因为它的析构函数不可见) …
Pimpl 习惯用法和内部对象协作,无需友元声明
我正在使用 pimpl 习惯用法实现几个类,并且遇到了一些设计问题。 首先,我总是看到 pimpl 这样做 class Object { public: Visible(); ~Visible(); ..…
C++ Code Complete 关于封装的建议?
在《Code Complete》中的“良好封装”部分中,建议隐藏私有实现细节。在 C++ 中给出了一个例子。这个想法基本上是将接口与实现完全分离,即使在类级别…
pimpl 中的方法是内联的吗?
考虑下一个简单的例子: 标题: // a.hpp #ifndef A_HPP #define A_HPP #include class A { public: A(); int foo(); private: struct Imp; std::auto…
隐藏一个 C++标头中的类而不使用未命名的命名空间
我正在编写一个 C++ 标头,其中定义了一个 class A { // ... }; 我想对外界隐藏的标头(因为它可能会在该标头的未来版本中更改甚至被删除)。 在同一…