Cat*_*iel 3 c++ smart-pointers c++17
我最近遇到了一个旧的C函数,该函数返回一个指向静态数组的指针。我围绕该函数编写了一个包装器,并返回了一个std::unique_ptr使用不删除来强调要返回的指针类型的-对用户的“请勿删除我”警告。这是示例代码
extern "C" int *f(int i);
struct noop
{
template <typename T>
void operator() (T t) const noexcept
{
}
};
class MyClass
{
public:
std::unique_ptr<int, noop> F(int value) const
{
return std::unique_ptr<int, noop>(f(value));
}
};
Run Code Online (Sandbox Code Playgroud)
有没有定义不删除结构的更干净的方法?
[..]旧的C函数返回指向静态数组的指针。我围绕该函数编写了一个包装器,并返回了一个
std::unique_ptr
不要。返回std::unique_ptr给呼叫者说:
对于静态数组的指针,这都不是真的!
坚持使用原始指针或使用一些包装器类以允许类似引用的访问。std::reference_wrapper例如在复制时还提供诸如原始指针之类的语义。
| 归档时间: |
|
| 查看次数: |
125 次 |
| 最近记录: |