调用重载' arg(QString(&)())'使用QApplication :: applicationDirPath调用时是不明确的,为什么?

时间:2014-03-27 11:31:42

标签: c++ qt qstring

QString msgText = QString("The file has been saved at %1\sysconf.xml").arg(QApplication::applicationDirPath);

给我上述错误。我之前使用过.arg(),所以我想知道为什么它会给我这个错误?我代码中的所有其他.arg()都能正常运行。

3 个答案:

答案 0 :(得分:7)

说明

QApplication::applicationDirPath是一个静态成员函数,要获得您正在寻找的值,您必须将其视为这样,因此;你必须调用这个函数。

目前您正在尝试将函数指针传递给QString::arg,并且由于编译器无法为此类构造找到合适的重载,因此会引发诊断。


解决方案

QString msgText = QString(...).arg(QApplication::applicationDirPath ());

注意:查看()之后添加的QApplication::applicationDirPath

答案 1 :(得分:1)

尝试实际调用该函数:

QString msgText = QString("The file has been saved at %1\sysconf.xml").arg(QApplication::applicationDirPath());

注意applicationDirPath之后的“()”

答案 2 :(得分:0)

根据this,您正在传递一个指向静态成员函数applicationDirPath的指针,而arg有几个重载,所有这些都是接受这样的poitner 。看起来您的编译器发现函数指针对参数类型arg的几次转换过载并且混淆了。你的意思是:

QString msgText = QString("The file has been saved at %1\sysconf.xml")
  .arg(QApplication::applicationDirPath());
                                 //    ^^--!!