gpt4 book ai didi

c++ - 带有 std::shared_ptr 的 QVariant

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:34:40 26 4
gpt4 key购买 nike

我有以下问题,我正在使用

Q_DECLARE_METATYPE( std::shared_ptr<int> );
qRegisterMetaType< std::shared_ptr<int> >();
QMetaType::registerComparators< std::shared_ptr<int> >();

使用std::shared_ptr<int>与例如QList模型。我需要一种行为

QVariant::fromValue( std::shared_ptr<int>( new int(5) ) ) == QVariant::fromValue( std::shared_ptr<int>( new int(5) ) )

是真的。自 std::shared_ptr<int>::operator== () 以来,我上面的代码在这里返回 false比较原始指针。是否可以在 QMetaType::registerComparators 中注册标准运算符以外的比较器?

最佳答案

您可以尝试使用 registerConverter()允许隐式转换 shared_ptr<int>到一个普通的 int,并以这种方式比较它们。显然你不会做 registerComparator() .另一种方法是包装 shared_ptr<int>在您自己的类(class)中并按照您想要的方式进行比较。

或查看 Q_DECLARE_SMART_POINTER_METATYPE .

关于c++ - 带有 std::shared_ptr 的 QVariant,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22200814/

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