c++ - 有没有办法将 QVariant 与 QVector 一起使用?

标签 c++ qt qvariant qvector

有没有办法将 QVariantQVector 一起使用?

我需要实现一个函数来比较两个 vector ,例如:

#include <QDebug>
#include <QVector>
#include <QString>

bool compareVectors(QVector<QVariant> vec1, QVector<QVariant> vec2)
{
    qDebug() << "Comparing vectors!";

    if( vec1 != vec2 )
    {
        qDebug() << "The vectors are different!";
        return false;
    }

    qDebug() << "The vectors are equal!";
    return true;
}

int main()
{
    QVector<double> v1;
    QVector<double> v2;
    v1 << 1 << 2;
    v2 << 3 << 4;

    QVector<QString> v3;
    QVector<QString> v4;
    v3 << "1" << "2";
    v4 << "3" << "4";

    compareVectors(v1, v1);
    compareVectors(v3, v4);

    return 0;
}

通过参数传递的两个 vector 将始终具有相同的数据类型,例如:

compareVectors(QVector<int>, QVector<int>);
compareVectors(QVector<double>, QVector<double>);
compareVectors(QVector<QColor>, QVector<QColor>);
compareVectors(QVector<QString>, QVector<QString>);

当我尝试运行上面的代码时,我收到以下错误消息:

error: no matching function for call to 'compareVectors'

注意:我使用的是 Qt 5.3。

最佳答案

您不能使用 QVector<int> (或 QVector<double> )当参数类型为 QVector<QVariant> 时.

我建议制作 compareVectors一个函数模板。

template <typename T>
bool compareVectors(QVector<T> vec1, QVector<T> vec2)
{
    qDebug() << "Comparing vectors!";

    if( vec1 != vec2 )
    {
        qDebug() << "The vectors are different!";
        return false;
    }

    qDebug() << "The vectors are equal!";
    return true;
}

关于c++ - 有没有办法将 QVariant 与 QVector 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47837580/

相关文章:

c++ - 给定起始地址和大小访问内存中的图像

c++ - C++常量放在哪里?在单独/共享的头文件(main.h)文件中?

c++ - QFlags 和 QVariant

c++ - QT - 如何从组合框中检索 QVariant 值?

c++ - V8 javascript如何进行异步调用

c++ - 整数常量上的错误后缀 Ui64 无效

c++ - 如何有效地并行化分而治之算法?

c++ - 如何从 QT UI 菜单栏(顶部菜单)开始打开文件(图像)

c++ - 为什么写入此套接字会丢弃读取缓冲区(这是真的发生了什么)?

c++ - 如何将 QVariant::fromValue 与 QString 一起使用?