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

解決


sou  2007-04-23 21:42:56  No: 64979  IP: 192.*.*.*

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

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

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

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

編集 削除
NowNow  2007-04-23 22:59:08  No: 64980  IP: 192.*.*.*

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

編集 削除
sou  2007-04-24 00:14:47  No: 64981  IP: 192.*.*.*

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

編集 削除
επιστημη  2007-04-24 00:19:39  No: 64982  IP: 192.*.*.*

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

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

編集 削除
sou  2007-04-24 00:43:15  No: 64983  IP: 192.*.*.*

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

編集 削除
επιστημη  2007-04-24 01:15:42  No: 64984  IP: 192.*.*.*

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

編集 削除
sou  2007-04-24 01:19:43  No: 64985  IP: 192.*.*.*

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

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

編集 削除