检查两个QSharedPointer是否具有相等的数据
Check two QSharedPointer have equal data
我有两个QSharedPointer,我可以像这个一样使用运算符===检查它们是否指向同一个对象吗
QSharedPointer1 == QSharedPointer2
或者我必须写
QSharedPointer1.data() == QSharedPointer2.data()
存储在指针中的对象具有重载运算符==。
您应该使用operator==
:
bool运算符==(const QSharedPointer&ptr1,const QSsharedPointer&ptr2)
如果引用的指针为ptr1与ptr2引用的指针相同。如果ptr2模板参数与ptr1的不同,QSharedPointer将尝试执行自动static_cast以确保被比较的指针是相等的。如果ptr2的模板参数不是如果是基类型或ptr1的派生类型,则会出现编译器错误。
因此,不需要通过data()
方法获取指针,+它将尝试使用static_cast
来匹配模板参数。
此外,请注意,存储在指针中的对象是否重载了operator==
并不重要——这里只是比较指针,而operator==
是为指针类型定义的。如果你想比较指针引用的对象,你需要取消引用指针并比较对对象的引用(这将调用T::operator==
方法):
if(*ptr1 == *ptr2)
// ...
来自QSharedPointer类引用:
bool operator==(const QSharedPointer<T>& ptr1, const QSharedPointer<X>& ptr2)
如果ptr1引用的指针与ptr2引用的指针相同,则返回true。
第一个版本应该可以与这里的相关
bool operator== ( const QSharedPointer<T> & ptr1, const QSharedPointer<X> & ptr2 )
如果引用的指针为ptr1与ptr2引用的指针相同。
- 检查输入 std::array 指针数据是否等于某个常量数组
- 从 std::string 到 std::array<char,size> 的 memcopy 额外数据是否是一种未定义的行为?
- 修改数据是否由 const shared_ptr&Ok 传递?
- 直接向工会而不是其特定成员之一发送memcpy数据是否安全
- TCP在客户端服务器之间传输时,数据是否有任何限制
- 从其后声明的另一个成员数据初始化成员数据是否为未定义行为
- C 文本写入随机数据.是否有缓冲区溢出
- C 检查数据是否已指定字符串
- 如何检查链表中的数据是否存在C++
- 使用无锁指针队列在线程之间移动数据是否安全
- C++ 检查数据是否相等
- C++,如何验证输入的数据是否为正确的数据类型
- visual C++-传递给线程的数据是否应该是易失性的
- 检查数据是否正常到达
- UDP 套接字.如何确定数据是否发送到有线
- 有没有办法检查外部数据是否通过管道传输到程序或程序是否自行运行
- 在代码中使用大量常量数据是否是一种不好的做法
- 数据是否在放置新分配的内存中对齐
- 缓冲区中的TCP数据是否可以重叠
- 如何检查数据是否插入剪贴板是从PrintScreen