いちばんやさしいゲームの作り方

文系の人でも、数理学がわからない人でもゲームプログラミングをマスターできるブログ

初期化と代入は違うとよく聞きますが、クラスだと違いがよくわかります。たとえば次のクラスをコンパイルするとエラーになります。

class SomeClass
{
private:
  const int value;
public:
  SomeClass(int value);
};

SomeClass::SomeClass(int value)
{
  this->value = value; // ←注目
}

なぜかというと、メンバ変数の value が const となっており、コンストラクタでそれを初期化せずに代入しようとしているからです( const がつくと定数になるので初期化はできても代入はできません)。

コンストラクタでメンバ変数を初期化するためには次のように書きます。

SomeClass::SomeClass(int value) : value(value)
{
}

面白いですね。

なんでこんなことを書いているのかというと、「リードオンリーのメンバ変数を作りたいけどどうしたらいいのか」という初歩的なことで悩んでしまったので、自分を戒める意味で記録しておこうと思いました次第です。

ゲームは着々と設計が進んでおります。

Contributions




Trackback URL

メルマガ登録・解除
 
挫折不可能!初級ゲームプログラミング完全マニュアル
RSS track feedいちばんやさしいゲームの作り方 カウンター
ブログSEO対策:track word あわせて読みたい SEO STATUS