#include <QQueue>
#include <QString>
class Util {
public:
static QQueue<QString> links;
Util() {
}
};
Util::links.enqueue("hello world");
どうやってやるの?
#include <QQueue>
#include <QString>
class Util {
public:
static QQueue<QString> links;
Util() {
}
};
Util::links.enqueue("hello world");
どうやってやるの?
関数の結果で初期化できます。
QQueue<QString> make_links() {
QQueue<QString> queue;
queue.enqueue("hello world");
return queue;
}
QQueue<QString> Util::links = make_links();
私は QT に詳しくありませんが、C++11 初期化子リストのサポートが追加されていることを期待するかもしれません。その場合、次のように初期化できます。
QQueue<QString> Util::links {"hello world"};
(更新: Shahbaz のコメントのリンクによると、C++11 を使用している場合は実際にそれを行うことができます)。
そのようなすべての場合に静的初期化オブジェクトを使用できます。
ヘッダファイル:
#include <QQueue>
#include <QString>
class Util {
public:
static QQueue<QString> links;
Util() {
}
};
cpp ファイル:
namespace {
struct StaticInitializer {
StaticInitializer() {
Util::links.enqueue("hello world");
}
} initializer;
}
静的メンバー関数を使用してみてください。
#include <QQueue>
#include <QString>
class Util {
public:
static QQueue<QString>& links() {
static QQueue<QString> instance;
static bool is_init = false;
if(!is_init) {
instance.enqueue("hello world");
is_init = true;
}
return instance;
}
Util() {
}
};
Shahbazが言ったように、C++ 11ではQQueueは初期化子リストをサポートしているようです:
QQueue<QString> Util::links = {"hello world"};
通常どおり、グローバル スコープで初期化します。
QQueue<QString> Util::links;
また
QQueue<QString> Util::links(1); // with constructor parameters if necessary