gpt4 book ai didi

c++ - 检查智能指针是否为空的模板函数

转载 作者:太空宇宙 更新时间:2023-11-04 12:48:47 25 4
gpt4 key购买 nike

为了解决这个问题,我有一个带有参数的宏,并使用 -> 调用它的方法。

我想扩展它来检查 null,但发现人们已经将它与智能指针一起使用,其中一些不支持转换为 bool。

其中一些智能指针具有不同命名的空值检查方法,我无权访问使用它的所有代码,因此我需要一个通用的解决方案。

我正在考虑将宏转发到某个模板函数,但我不确定如何完全通用地做到这一点。

最佳答案

如果它与 -> 一起使用,并且它通过返回内部指针的 operator-> 工作,那么也许您可以将它与 NULL 进行比较:

if(ptr.operator->() == NULL) throw std::invalid_argument("The pointer points to nowhere");

好的,所以如果'smart pointers'返回'smart pointers',我们需要更深入:

template<typename T> bool isNull(T *t) { return t == NULL; }
template<class T> bool isNull(T const &t) { return isNull(t.operator->()); }

可怕而有效(但需要 const 限定的 operator-> 重载。

关于c++ - 检查智能指针是否为空的模板函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50055715/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com