我正在重写一些代码以消除全局变量,并使类构造函数/析构函数处理一些第三方库资源的清理,但我担心一些从类初始值设定项列表中的另一个成员初始化一个成员的代码。
class MyPodofoDocument {
public:
// generates pdf to stream
MyPodofoDocument(std::stringstream *pStringStream)
: device(pStringStream), document(&device)
{
}
private:
PoDoFo::PdfOutputDevice device;
PoDoFo::PdfStreamedDocument document;
PoDoFo::PdfPainter painter;
};
使用此类的代码不需要查看使用该库的所有详细信息,但我隐藏它们的方式使其依赖于使用成员来初始化其他成员,然后再到达构造函数的实际代码块,其中它有一个有效的 this 指针。
它在单元测试框架中工作,所以我的问题基本上是,“这可以吗,便携且安全吗?”
成员按照声明的顺序从上到下初始化
PoDoFo::PdfOutputDevice device;
PoDoFo::PdfStreamedDocument document;
PoDoFo::PdfPainter painter;
所以使用起来很安全device
初始化document
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)