10

構造体のインスタンスである静的定数変数をクラスに追加しようとしています。静的なので、クラス宣言で初期化する必要があります。このコードを試す

class Game {
    public:
        static const struct timespec UPDATE_TIMEOUT = { 10 , 10 };

    ...
};

このエラーの取得:

エラー: ここでは、'{' トークンの前に中括弧で囲まれた初期化子を使用できません

エラー: 非整数型 'const timespec' の静的データ メンバーの無効なクラス内初期化

どうすれば初期化できますか? ありがとう!

4

2 に答える 2

23

クラス外のソースファイル内の別の定義で初期化します。

// Header file
class Game {
    public:
        // Declaration:
        static const struct timespec UPDATE_TIMEOUT;
    ...
};

// Source file
const struct timespec Game::UPDATE_TIMEOUT = { 10 , 10 };  // Definition

ヘッダーファイルに定義をインクルードする場合、そのヘッダーが複数のソースファイルに含まれていると、複数定義されたシンボルに関するリンカーエラーが発生する可能性があります。

于 2012-08-22T18:51:34.383 に答える
0

関数内で変数を静的変数として宣言し、その関数が変数への参照を返すようにします。

于 2016-09-02T11:56:52.293 に答える