上QCoreApplication(ライブラリを構築する場合など)、私が必要としている、と私は、次の奇妙な行動(Qtの5.7)が見つかりました:ヒープ上QCoreApplicationをインスタンス化するために、ヒープ
#include <QCoreApplication>
#include <QDebug>
class Test
{
public:
Test(int argc, char *argv[]) {
m_app = new QCoreApplication(argc, argv);
//uncomment this line to make it work
//qDebug() << "test";
}
~Test() { delete m_app; }
private:
QCoreApplication* m_app;
};
int main(int argc, char *argv[])
{
Test test(argc, argv);
qDebug() << QCoreApplication::arguments(); //empty list!
}
基本的に、すべてのもののように動作しますオブジェクトを割り当てた直後に "qDebug()"が使用されていると予想されます。そうでない場合、arguments()
のリストは空です。
私は同意します、それはあまりにも、私はそれをテストしていないが動作するはずです。実際、この例では、 'QCoreApplication'をヒープに割り当てる必要はありませんが、' Test'クラスも必要ありません。実際のコードでは、 'Test'と' QCoreApplication'のインスタンスは同じ寿命を持ちません。しかし、QCoreApplicationがスタックに割り当てられていれば、バグは表示されません。 – matpen