staticなメンバ変数を同じクラスのメソッドで利用するためには

解決


sou  2007-04-24 06:42:56  No: 64979

オブジェクト指向を勉強していて詰まりました

タイトルの通りなのですがラジオボタンのように複数のボタンから一つだけが違う描写になるようなボタンのクラスを作りたくてstatic変数を利用しようと思いましたが、○○が未解決とコンパイラにはじかれます。

class CButton{
  private:
    LPSTR m_text;  //ボタンの名前
    int m_id;
  public:
    static int a;
    void Draw(HDC hdc);
}
のようなクラスで、aとidが一致するものだけDrawで条件分岐し、描写を変えるみたいなことはできるのでしょうか?

見当はずれな考え方かもしれませんがよろしくお願いします。


NowNow  2007-04-24 07:59:08  No: 64980

C++ファイルに
    int CButton::a = 0;
のように記述すれば未解決エラーは無くなると思います。


sou  2007-04-24 09:14:47  No: 64981

未解決エラーはなくなりましたが・・・
static変数は作るたびに一個ずつ外部で宣言しないとだめなのでしょうか?


επιστημη  2007-04-24 09:19:39  No: 64982

> static変数は作るたびに一個ずつ外部で宣言しないとだめなのでしょうか?

クラス内に書いたstatic変数は"宣言"してるだけです。
だから"定義"が必要なの。


sou  2007-04-24 09:43:15  No: 64983

定義と宣言の違いを調べていくうちになんとなくわかってきました。
ラジオボタンのような場合static変数を使うのと実際にクラスを定義している関数内で別の変数を用意する方法とどちらが一般的ですか?


επιστημη  2007-04-24 10:15:42  No: 64984

case by case じゃないでしょか。


sou  2007-04-24 10:19:43  No: 64985

ですか・・・
とりあえずせっかくなのでstaticのほうで行ってみます

回答してくださった皆様ありがとうございました!!


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加