将QString转换为QString的指针
Convert QString to Pointer of QString
由于我不是C( )专家,因此我被编译器的某些固执性而感到困惑,不想在这种情况下将QString转换为QString*。我有一个功能:
bool getNextMessage(int sId, QString *msg, QString *cmd)
我在这里使用指针,因为我在C中无法返回一个以上的变量(变质的perl编码器;)),我想在一段时间内使用它(getNextMessage(...)){...}样式循环。该功能内部有一些SQL FOO,此功能:
msg = QString("");
cmd = QString("");
return false;
编译器所产生的所有内容是:
cannot convert 'QString' to 'QString*' in assignment
亲爱的伙计们,请为我举起这个谜吗?谢谢。:)
编辑:解决方案:由于从Leemes的指针指针。
为此,您通常使用参考,而不是 pointers 。对于C 新手,很难获得区别。简短的解释将是"参考更安全的指针"。
bool getNextMessage(int sId, QString &msg, QString &cmd)
以这种方式,您可以在不转换为指针的情况下调用该方法,并使用与正常变量一起使用的引用,因此设置字符串内容的代码很好。
如果您想坚持指示器 - 或者,了解如何使用指针做到这一点 - 这就是您使用指针的方式:
*msg = QString("");
*msg
dereferences msg
,这意味着您正在使用指针背后的对象。对于功能调用,有->
操作员。
呼叫
msg = new QString("");
在句法上也是正确的,但不做您期望的事情!这一行意味着您分配一个新的QString对象,并获得该新创建的对象的指针。然后,将此指针分配给msg
。这对于在功能中遵循代码来说是可以的。但是,您更改了msg
本身(指针地址),而不是msg
指向的内存。这意味着,呼叫者不会在这里注意到。函数调用后,呼叫者与旧指针一起工作。
尝试使用以下内容。
*msg = QString("");
*cmd = QString("");
确保您的指针是初始化的。
QString
不是 QString*
。也许您想放弃指针并将指向的对象分配给:
*msg = QString("");
否则我希望以下等效:
*msg = "";
相关文章:
- 1d 智能指针不适用于语法 (*)++
- 在C#中处理C++指针而不使用unsafe的最佳方法
- 为什么使用 "this" 指针调用派生成员函数?
- 将 Qvector<uint8_t> 转换为 QString
- 函数向量_指针有不同的原型,我可以构建一个吗
- 使用指针从C++中的数组中获取最大值
- 助记符和指向成员语法的指针
- 嵌入方指针压缩已禁用
- 数组的指针从不分段故障
- C++ 指针的内存地址和指向数组的内存地址如何相同?
- 何时在引用或唯一指针上使用移动语义
- QMetaObject invokeMethod的基于函数指针的语法
- 如何从 std::atomic 中提取指针 T<T>?
- 如何在 C# 中映射双 C 结构指针?
- 如何使用 QMap<QString, QString>::const_iterator 作为指针?
- 将QString转换为QString的指针
- 当我在方法中使用指针时,QString 变量更改为 QCharRef
- 从QString到char指针的转换生成空字符串
- 试图创建Qt 4.7 qstring,材料到数组的指针
- 如何将QString转换为QString指针