2

簡単に修正できる厄介な問題に遭遇しましたが、私が楽しんでいるものではありません。私のクラスのコンストラクターでは、データ メンバーのデータ メンバーを初期化しています。ここにいくつかのコードがあります:

class Button {
private:
    // The attributes of the button
    SDL_Rect box;

    // The part of the button sprite sheet that will be shown
    SDL_Rect* clip;

public:
    // Initialize the variables
    explicit Button(const int x, const int y, const int w, const int h)
        : box.x(x), box.y(y), box.w(w), box.h(h), clip(&clips[CLIP_MOUSEOUT]) {}

ただし、次のようなコンパイラ エラーが表示されます。

C:\Users\Alex\C++\LearnSDL\mouseEvents.cpp|56|error: expected `(' before '.' token|

C:\Users\Alex\C++\LearnSDL\mouseEvents.cpp|56|error: expected `{' before '.' token|

この方法でメンバーを初期化することに問題はありますか?コンストラクターの本体で割り当てに切り替える必要がありますか?

4

2 に答える 2

5

でのみメンバー変数コンストラクターを呼び出すことができますinitialization list。したがって、を受け入れるSDL_Rectがない場合は、コンストラクターの本体でそれを行う必要があります。constructorx, y, w, h

于 2009-09-26T04:28:58.343 に答える