如何更改内置库的公共函数访问。例如:
我正在使用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
会在使用智能指针时产生编译器错误,而不是运行时错误
1条答案
按热度按时间jogvjijk1#
因为@463035818_is_not_a_number。在这种情况下,我应该使用
const A&
。我只想使用
A
对象。所以这对我来说是最好的解决方案。我是C++新手(以前用过C#),所以我对如何使用那些智能指针感到困惑。