gpt4 book ai didi

c++ - 将 QString 转换为 QString 的指针

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:27:28 27 4
gpt4 key购买 nike

因为我不是 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

亲爱的 friend 们,能帮我解开这个谜团吗?谢谢。 :)

编辑:解决方案:由于 leemes 指向它们的指针,现在使用引用。

最佳答案

为此,您通常使用引用,而不是指针。对于 C++ 新手来说,很难理解其中的区别。一个简短的解释是“引用是更安全的指针”。

bool getNextMessage(int sId, QString &msg, QString &cmd)

这样,您就可以在不转换为指针的情况下调用该方法,并使用与处理普通变量相同语法的引用,因此您设置字符串内容的代码没有问题。

如果您想坚持使用指针——或者想了解如何使用指针来做到这一点——这就是您使用指针的方式:

*msg = QString("");

*msg 取消引用 msg,这意味着您正在使用指针后面 的对象。对于函数调用,有 -> 运算符。

打电话

msg = new QString("");

在句法上也是正确的,但不会按照您的预期去做!这一行意味着你分配了一个新的 QString 对象,并获得了这个新创建的对象的指针。然后,您将此指针分配给 msg。这对于函数中的后续代码很好。但是,您更改了 msg 本身(指针地址),而不是 msg 指向的内存。这意味着,调用者不会注意到此处的任何内容。调用者在函数调用后使用旧指针。

关于c++ - 将 QString 转换为 QString 的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13951874/

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