Qt QList <T>强制转换和node_copy

蒿甲醚

我发现一个错误,不知道如何解决。我正在为可用的SQLDrivers(提供程序)选择组合框选择器。

标头

#include "QObject"
#include "QString"
#include "QList"
#include "QPointer"

class TProvider;
typedef const TProvider * const TProviderPointer;

class TProvider
{
    public:
        QString name;
        QString driverName;

        TProvider(QString name, QString driverName);
        static const QList<TProviderPointer> getAvailableProviders();
        static TProviderPointer getProvider(int id);
};

TProviderPointer MySQLProvider = new TProvider("MySQL", "QMYSQL");
TProviderPointer IBProvider = new TProvider("Interbase", "QIBASE");

CPP。在这里,我创建了两个指向const提供程序(TProviderPointer)的const指针(枚举可用的驱动程序)。我有一个方法,可以返回const QList。

#include "tprovider.h"

TProvider::TProvider(QString name, QString driverName):
    name(name), driverName(driverName)
{
}

const QList<TProviderPointer> TProvider::getAvailableProviders()
{
    QList<TProviderPointer> list;
    list.append(MySQLProvider);
    list.append(IBProvider);

    return list;
}

TProviderPointer getProvider(int id)
{
    switch(id){
        case 0:
            return MySQLProvider;
        case 1:
            return IBProvider;
    }
}

当我用这个

const QList<TProviderPointer> list = TProvider::getAvailableProviders();
foreach (TProviderPointer provider, list) {
    ui->eprovider->addItem(provider->name);
}

我得到的和错误指向qlist.h和线const QList<TProviderPointer> list = TProvider::getAvailableProviders();- > C2440TProviderPointer *void *行:

Q_INLINE_TEMPLATE void QList<T>::node_copy(Node *from, Node *to, Node *src)

使用中是否有任何复印操作?我怎样才能解决这个问题?谢谢。

内贾特

我认为问题出在您的typedef。const TProvider * const是指向的指针,const TProvider但是在您的代码中您正在TProvider运行时创建新的实例您也可以在Qt文档中阅读有关QList的内容:

QList的值类型必须是可分配的数据类型。

所以你应该有一个指向TProvider,你的typedef应该像:

typedef const TProvider * TProviderPointer;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Qt QMap和QList速度

来自分类Dev

Qt QMap和QList速度

来自分类Dev

Qt 5中的QList <T> :: at:ASSERT失败:“索引超出范围”

来自分类Dev

Qt 5中的QList <T> :: at:ASSERT失败:“索引超出范围”

来自分类Dev

从qml访问QList <T>

来自分类Dev

QList<T>::operator[] 中的断言失败:“索引超出范围”文件 /usr/include/arm-linux-gnueabihf/qt5/QtCore/qlist.h

来自分类Dev

如何在Qt 6中将QList转换为QSet

来自分类Dev

为什么Qt容器(例如QList和QVector)没有迭代器范围构造函数?

来自分类Dev

如何创建QList的深层副本(Qt 4.8)

来自分类Dev

QT / Javascript Bridge:通过Qlist <QVariantMap>?

来自分类Dev

QList qt5.3中的比较项目

来自分类Dev

从QPolygonF作为QList项的Qt / C ++继承

来自分类Dev

Qt QList不追加本地对象

来自分类Dev

比较QList qt5.3中的项目

来自分类Dev

QObjectList和QList的区别

来自分类Dev

Qt C ++如何使用QList <> :: const_iterator?

来自分类Dev

如何在Qt中对QList <QVariant>进行排序?

来自分类Dev

Qt容器(QVector,QList):: end()返回无法引用的迭代器

来自分类Dev

在C ++ / QT中创建抽象类对象的QList?

来自分类Dev

从QML访问QList时QT / QML c ++程序崩溃

来自分类Dev

Apple LLVM下Qt 4.8.4 QList的奇怪崩溃

来自分类Dev

Qt容器(QVector,QList):: end()返回无法引用的迭代器

来自分类Dev

C++ QT Casting 到 QList 中项目的子类

来自分类Dev

如何在 QT 中使用 QSettings 保存自己类的 QList?

来自分类Dev

如何在不使用任何迭代器的情况下获取Qt中QList的最小值和最大值?

来自分类Dev

将QList迭代器转换为索引

来自分类Dev

swig:如何使QList <T>可迭代,如std :: vector

来自分类Dev

有没有更简单的方法从QList <Class *>转换为QList <QPointer <Class >>?

来自分类Dev

在其他PC上安装后,Qt QList ASSERT失败

Related 相关文章

  1. 1

    Qt QMap和QList速度

  2. 2

    Qt QMap和QList速度

  3. 3

    Qt 5中的QList <T> :: at:ASSERT失败:“索引超出范围”

  4. 4

    Qt 5中的QList <T> :: at:ASSERT失败:“索引超出范围”

  5. 5

    从qml访问QList <T>

  6. 6

    QList<T>::operator[] 中的断言失败:“索引超出范围”文件 /usr/include/arm-linux-gnueabihf/qt5/QtCore/qlist.h

  7. 7

    如何在Qt 6中将QList转换为QSet

  8. 8

    为什么Qt容器(例如QList和QVector)没有迭代器范围构造函数?

  9. 9

    如何创建QList的深层副本(Qt 4.8)

  10. 10

    QT / Javascript Bridge:通过Qlist <QVariantMap>?

  11. 11

    QList qt5.3中的比较项目

  12. 12

    从QPolygonF作为QList项的Qt / C ++继承

  13. 13

    Qt QList不追加本地对象

  14. 14

    比较QList qt5.3中的项目

  15. 15

    QObjectList和QList的区别

  16. 16

    Qt C ++如何使用QList <> :: const_iterator?

  17. 17

    如何在Qt中对QList <QVariant>进行排序?

  18. 18

    Qt容器(QVector,QList):: end()返回无法引用的迭代器

  19. 19

    在C ++ / QT中创建抽象类对象的QList?

  20. 20

    从QML访问QList时QT / QML c ++程序崩溃

  21. 21

    Apple LLVM下Qt 4.8.4 QList的奇怪崩溃

  22. 22

    Qt容器(QVector,QList):: end()返回无法引用的迭代器

  23. 23

    C++ QT Casting 到 QList 中项目的子类

  24. 24

    如何在 QT 中使用 QSettings 保存自己类的 QList?

  25. 25

    如何在不使用任何迭代器的情况下获取Qt中QList的最小值和最大值?

  26. 26

    将QList迭代器转换为索引

  27. 27

    swig:如何使QList <T>可迭代,如std :: vector

  28. 28

    有没有更简单的方法从QList <Class *>转换为QList <QPointer <Class >>?

  29. 29

    在其他PC上安装后,Qt QList ASSERT失败

热门标签

归档