代码在VS 2008中运行良好,但在更高版本的VS中则不行
Code works fine in VS 2008 but not in later versions of VS
以下代码在VS 2008中工作正常,但在更高版本中会给出错误(C2440:"初始化":无法从"重载函数"转换为"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版本。
相关文章:
- 在VS代码中交叉编译Windows与Linux上的MinGW的SDL程序
- 为cl.exe(Visual Studio代码)指定命令行C++版本
- 导入库可以跨dll版本工作吗
- 如何为模板化对象创建模板向量?VS正在投掷C3203
- 数据成员SFINAE的C++17测试:gcc vs clang
- 为什么在Windows上的VS 2019和Clang 9中"size_t"在没有标题的情况下工作
- 在调用FreeLibrary后,释放动态链接到具有相同版本的CRT堆的DLL的内存
- 在for循环中使用auto vs decltype(vec.size())来处理字符串的向量
- 正在VS调试器中监视映射条目
- Confusion: decltype vs std::function
- 我如何在VS 2017中的Windows安装程序安装Windows安装程序应配置What what版本
- 集成在不同VS版本中开发的应用程序
- 如何在vs android版本中启用c++0x
- 在 VS 和 Linux 版本中包含相同的 #define
- VS2010上不区分大小写的字符串比较-为每个版本的VS播放#if定义的语句
- 是否有可能在调试版本中编译VS项目,包括通过不同的项目进行调试的断点
- 为什么即使在调试版本中,VS 和 Windbg 也会"this"指针打印为"0xcccccccc"?
- 代码在VS 2008中运行良好,但在更高版本的VS中则不行
- Visual Studio 2008 - 获取 VS C++ 项目的版本号
- 如何在 VS 版本之间创建一致的 dll 二进制文件