直接上图:
第252行,想通过const char* 在QJsonArray中定位相应的QJsonObject对象出来,就报了这个错。
网上找找,遇到这个问题的人很少,没什么回答。但有位哥们儿言简意赅地回答了解决方案:这里是那哥们儿回答的链接
按他说的,在const char前面加QStringLiteral构成一个匿名参数果然编译通过了。
但个中原因仍然百思不得其解,问了大佬才知道,工程里面加了一个宏:QT_NO_CAST_FROM_ASCII
手册里面是这样描述这个宏的:
相当清楚明了了,就是不让你用char的方式构造QString
再看看QT干了什么:
就
就是如果定义了这个宏,就把const char*的构造方式private掉,甚至operator=也被private了,所以前面报的“无法访问private成员”的错误就可以理解了。
关于“C2248 QString::QString 无法访问private成员的问题”
最新推荐文章于 2024-07-05 17:55:05 发布
在使用QJsonArray时遇到C2248错误,无法通过const char*构造QString对象。解决方案是使用QStringLiteral或QLatin1String。QT_NO_CAST_FROM_ASCII宏将const char*构造方式设为private,推荐使用QLatin1String以降低内存开销,它对const char进行轻量级包装。QStringLiteral虽能优化构建速度,但在性能上仍不及QLatin1String。
摘要由CSDN通过智能技术生成