我正在使用Xerces做一些xml写作.
这是从我的代码中提取的几行:
DOMLSSerializer *serializer = ((DOMImplementationLS*)implementation)->createLSSerializer();
serializer->release();
Run Code Online (Sandbox Code Playgroud)
有没有我可以使用的boost智能指针,所以我可以避免调用serializer-> release(); 因为它不是例外安全.我看到的问题是,智能指针只能调用指针对象上的delete,是否可以自定义调用release?
谢谢
是的,智能指针可以调用自定义的"删除"功能对象.
#include <iostream>
#include <tr1/memory>
struct Example {
void release() { std::cout << "Example::release() called\n"; }
};
struct ExampleDeleter {
void operator()(Example* e) { e->release(); }
};
int main()
{
{
std::tr1::shared_ptr<Example> p ( new Example, ExampleDeleter() );
}
std::cout << " see?\n";
}
Run Code Online (Sandbox Code Playgroud)
(同样适用于boost:请参阅shared_ptr(Y*p,D d);构造函数.)
| 归档时间: |
|
| 查看次数: |
348 次 |
| 最近记录: |