gpt4 book ai didi

c++ - 代码在 VS 2008 中运行良好,但在更高版本的 VS 中运行不正常

转载 作者:行者123 更新时间:2023-11-30 03:52:16 26 4
gpt4 key购买 nike

以下代码在 VS 2008 中运行良好,但在更高版本中会出现错误 (C2440: 'initializing' : cannot convert from 'overloaded-function' to 'TQStringArgFnPtr'范围内具有此名称的函数均不匹配目标类型)

我完全不明白为什么。谁能帮我看看 vs2008 和之后的 v. 到底有什么区别?

#include <QtCore>

typedef QString (QString::*TQStringArgFnPtr)(const QString &, int, const QChar &) const ;
TQStringArgFnPtr QStringArgFnPtr = &QString::arg;

最佳答案

在这种情况下,分配应该足以消除所选函数重载的歧义。这是我首先想到编译器错误的原因之一(第二个是 VS)。

但是,仔细阅读文档表明 Qstring::arg 的这个特定重载已更改签名,从:

QString QString::arg(
const QString & a,
int fieldWidth = 0,
const QChar & fillChar = QLatin1Char( ' ' )
) const

... 在 Qt 4.8 中, 至:

QString QString::arg(
const QString & a,
int fieldWidth = 0,
QChar fillChar = QLatin1Char( ' ' ) // no more reference !
) const

... 在 Qt 5.4 中.第一个重载不再存在。

这让我得出结论,您的不同 VS 版本指向在这方面不兼容的不同 Qt 版本。

关于c++ - 代码在 VS 2008 中运行良好,但在更高版本的 VS 中运行不正常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30797635/

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