C++更改内置函数的访问,即智能指针get()

3vpjnl9f  于 2022-12-05  发布在  其他
关注(0)|答案(1)|浏览(125)

如何更改内置库的公共函数访问。例如:
我正在使用const std::unique_ptr&。我不希望任何人使用函数.get()来获取原始指针,因为你不能暂停任何人使用delete原始指针,因为在释放unique_ptr后,会出现运行时错误,给出关于delete的错误
使用const reference,我阻止用户使用std::move()。我也想阻止用户使用.get()。我该怎么做?

void SmartPointerUsage(const std::unique_ptr<A>& ref)
{
    A* rawPtr = ref.get();     // No compiler error, I want to prevent using that function
    std::unique_ptr<A> moved = std::move(ref); // Gives compiler error, that's what I need
}

编辑1:实际上,删除操作符delete会在使用智能指针时产生编译器错误,而不是运行时错误

jogvjijk

jogvjijk1#

因为@463035818_is_not_a_number。在这种情况下,我应该使用const A&
我只想使用A对象。所以这对我来说是最好的解决方案。我是C++新手(以前用过C#),所以我对如何使用那些智能指针感到困惑。

相关问题