Qt を使用していますが、これは一般的な C++ の質問です。私の場合は単純Constants
です。特定の関数呼び出しが行われた後に初期化する定数静的メンバーを持つクラスがあります。
定数.h
#ifndef CONSTANTS_H
#define CONSTANTS_H
class Constants
{
public:
static const char* const FILE_NAME;
};
#endif // CONSTANTS_H
定数.cpp
#include "constants.h"
#include <QApplication>
const char* const Constants::FILE_NAME = QApplication::applicationFilePath().toStdString().c_str();
main.cpp
#include <QtGui/QApplication>
#include "mainwindow.h"
#include "constants.h"
#include <QDebug>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
qDebug()<< "name: "<<Constants::FILE_NAME;
//for those who are unfamiliar with Qt, qDebug just prints out
return a.exec();
}
コンパイルすると、次のようになりました。
QCoreApplication::applicationFilePath: 最初に QApplication オブジェクトをインスタンス化してください
したがって、ここでの問題は明らかです。QApplication の静的関数が Constants.cpp で呼び出されると、QApplication は Qt によってまだインストールされません。QApplication a(argc, argv);
main.cppで行が渡されるまで何とか待つ必要があります
それは可能ですか?そうでない場合、これを克服するために他に何を提案できますか?
ありがとう