首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检查两个QSharedPointer有相同的数据

检查两个QSharedPointer有相同的数据
EN

Stack Overflow用户
提问于 2013-02-14 16:18:23
回答 3查看 1.3K关注 0票数 2

我有两个QSharedPointer,我可以检查它们是否指向同一个对象,使用这样的operator==

代码语言:javascript
复制
QSharedPointer1 == QSharedPointer2

否则我必须写

代码语言:javascript
复制
QSharedPointer1.data() == QSharedPointer2.data()

对象中存储在指针中的对象重载了operator==。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-02-14 16:23:44

来自QSharedPointer类引用

bool operator==(const QSharedPointer<T>& ptr1, const QSharedPointer<X>& ptr2) 如果ptr1引用的指针与ptr2引用的指针相同,则返回true。

票数 1
EN

Stack Overflow用户

发布于 2013-02-14 16:25:01

你应该使用operator==

bool operator== ( const QSharedPointer & ptr1,const QSharedPointer & ptr2 ) 如果ptr1引用的指针与ptr2引用的指针相同,则返回true。如果ptr2的模板参数与ptr1的不同,QSharedPointer将尝试执行一个自动static_cast,以确保所比较的指针相等。如果ptr2的模板参数不是基类型或从ptr1派生的类型,您将得到一个编译器错误。

因此,不需要通过data()方法获取指针,+它将尝试执行static_cast来匹配模板参数。

另外,请注意,存储在指针中的对象是否重载operator==并不重要--您只是在这里比较指针,而operator==是为指针类型定义的。如果要比较指针所引用的对象,则需要取消引用指针,并比较对对象的引用(将调用T::operator==方法):

代码语言:javascript
复制
if(*ptr1 == *ptr2)
   // ...
票数 2
EN

Stack Overflow用户

发布于 2013-02-14 16:23:43

第一个版本应该与这里相关

bool operator== ( const QSharedPointer<T> & ptr1, const QSharedPointer<X> & ptr2 ) 如果ptr1引用的指针与ptr2引用的指针相同,则返回true。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14879250

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档