2014-03-27 279 views
1
QString msgText = QString("The file has been saved at %1\sysconf.xml").arg(QApplication::applicationDirPath); 

给我上面的错误。之前我使用过.arg(),所以我想知道它为什么会给我这个错误?我的代码中的所有其他.arg()都能正常工作。当使用QApplication :: applicationDirPath调用时,重载的'arg(QString(&)())'调用不明确,为什么?

+0

您能否提供*完整*错误信息?它包括呼叫的实际类型,通常还包括可用的替代功能。 –

+0

我认为这里有足够多的错字问题。恐怕这个人不会帮助任何人。 –

回答

7

解释

QApplication::applicationDirPath是一个静态成员函数,来获得你正在寻找的价值,你必须把它作为这样的,因此,你必须调用这个函数。

您正在尝试将函数指针传递给QString::arg,由于编译器无法找到这样一个合适的重载构造它提出了一个诊断。


的解

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

注:QApplication::applicationDirPath后加入()

+0

哦该死的,对!感谢您的解释,但。现在它工作了! – KrauseDroid

+0

它似乎找到多个合适的重载,或者错误消息应该不同。这让我想知道那些重载可能是什么? –

1

尝试实际调用该函数:

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

通知的“()” applicationDirPath后。

0

根据this您传递的指针静态成员函数applicationDirPath,并且arg有几个重载都做接受这样的poitner。看起来你的编译器发现函数指针的几次转换对参数类型arg重载并且感到困惑。您的意思是:

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