Pup*_*ppy 5 c++ visual-studio-2010 c++11
我想有一个运行时界面,提供一些创建方法.这些方法返回unique_ptr<T>
,我想通过创建类启用自定义删除.问题是我绝对不希望接口直接提供这些方法 - 它们应该仅在破坏时才可用unique_ptr<T, SomeCustomDel>
.现在,我认为我可以使用std::unique_ptr<T, std::function<void(T*)>>
,但我真的不愿意,因为我根本不需要这种抽象级别,我不想支付堆分配.
有什么建议?
我对你的规格不太清楚,但是你考虑过吗unique_ptr<T, void(*)(void*)>
?这是一种非常灵活的类型,具有动态删除器的许多品质。
如果这不是您想要的,您可以尝试以下方法:
class impl
{
public:
virtual ~impl();
virtual void operator()(void*) = 0;
virtual void other_functionality() = 0;
};
class my_deleter
{
impl* p_;
public:
...
void operator()(void* p) {(*p_)(p);}
void other_functionality() {p_->other_functionality();}
...
};
Run Code Online (Sandbox Code Playgroud)
如果没有有关您的要求的更多详细信息,很难知道什么最适合您的情况。
归档时间: |
|
查看次数: |
1762 次 |
最近记录: |