Qt QList<T>演员阵容和node_copy
Qt QList<T> casts and 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。在这里,我创建了两个指向常量提供程序(TProviderPointer)(枚举可用驱动程序)的常量指针。我有一个方法,返回常量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();
-> C2440 TProviderPointer *
到void *
行:
Q_INLINE_TEMPLATE void QList<T>::node_copy(Node *from, Node *to, Node *src)
我是否有任何复制操作正在使用?我该如何解决这个问题?谢谢。
我认为问题出在你的typedef上。 const TProvider * const
是指向const TProvider
的指针,但在代码中,您将在运行时创建TProvider
的新实例。您也可以在有关QList的Qt文档中阅读:
QList 的值类型必须是可分配的数据类型。
所以你应该有一个指向TProvider
的指针,你的 typedef 应该是这样的:
typedef const TProvider * TProviderPointer;
相关文章:
- node-gyp 在 macOS 上未正确链接库
- std::filesystem::copy throws filesystem_error
- 如何在 Boost.Asio 中使用 Zero-copy sendmsg/receive
- 为什么C++对链表中的下一个节点使用指针,而像 C# 或 Java 这样的语言只使用类 Node 的名称?
- node-gyp 的先有鸡还是先有蛋的问题:指向依赖项中的头文件
- 在 ubuntu 上安装 node js pulsar 客户端
- 如何使用 Node-addon-API 实现 node-nan 回调
- Node.js fs.open() 在尝试打开 4 个以上的命名管道 (FIFO) 后挂起
- NodeJS:node-gyp 编译与等效的 gcc -lm 选项
- 调用'Node'构造函数是不明确的
- C++ 一个lambda浅拷贝const Type&如果它被赋予一个命名捕获,如[copy=val](){}?
- QML/C++/QObject Struct Copy
- 为什么我得到变量"Node"不是类型名称错误
- C++赋值运算符,我们可以用 copy 替换它吗?
- 为什么我使用 std::copy() 收到运行时错误(分段错误)?
- 在 node.js 中将缓冲区从 C++ 转换为 UTF-8 字符串
- 如何解决C++中声纳库贝静态代码分析错误"Explicitly define the missing copy constructor, move constructor .."
- 如何使用 std::copy 当类有"无符号字符和运算符[]"时
- 如何从 node-ffi 调用 c++ 中以结构向量作为参数的方法?
- std::copy 导致运行时检查失败 #2