クラスについて

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
十理須賀利

クラスについて

#1

投稿記事 by 十理須賀利 » 11年前

初めまして。クラス化について少し分からない事がありましたのでここでご質問させて頂きます。

今、私はちょっとしたゲームのクラス分けを試みています。TitleやPlay等の複数のシーンをクラスで作り、SceneMngで管理させています。
そこで、CharやMapなどのクラスもヘッダごとに分けて作っているのですが、生成方法がいまいち分かりません。例えば・・・

※一部省略しています

コード:

Char.h//ヘッダファイルにて
class Char
{
private:
    int pos;
public:
    Initialize();
};
Play.h//ヘッダファイルにて
class Play
{
public:
    Char char;//インスタンス化
public:
    Initialize();
}
Play.cpp//cppファイルにて
Play::Initialize()
{
    char.pos = 0; //アクセス不可(posがprivateだから?でもpublicじゃ意味ないし・・・)
}
とまあ、エラーが出るわけです・・・。
どうにかしてcharをPlayの中で生成したいのですが、どうすればよいのでしょうか?

言葉足らずで申し訳ありませんが、よろしくお願いいたします?

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Re: クラスについて

#2

投稿記事 by みけCAT » 11年前

C++において、charは予約語なので、変数名には使用できません。
別の言語を使用してください。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

アバター
h2so5
副管理人
記事: 2212
登録日時: 14年前
住所: 東京
連絡を取る:

Re: クラスについて

#3

投稿記事 by h2so5 » 11年前

コンストラクターを使いましょう

コード:

class Char
{
private:
    int pos;
public:
	Char(int p);
};

Char::Char(int p) : 
	pos(p)
{
}

class Play
{
public:
    Char character;//インスタンス化
public:
    Play();
};

Play::Play() : 
	character(0)
{   
}

アバター
usao
記事: 1889
登録日時: 12年前
連絡を取る:

Re: クラスについて

#4

投稿記事 by usao » 11年前

>コンストラクターを使いましょう

わざわざ publicな Initialize() という関数を用意しているのだから,
現存するインスタンスを「何らかの意味で初期状態に戻す」手段が欲しいという話なのではないでしょうか.

コード:

class Play
{
  public:  //(ココpublicでいいのか?という話はとりあえず置いといて)
    Char m_char;  //変数名をこう変えたとして…
  pubilc:
    Initialize();
};

Play::Initialize()
{
  m_char.Initialize();  //Char::Initialize()を使えばいいように思いますが,どうなんでしょう?
}
[追記]
…と思ったら,
>生成方法がいまいち分かりません
と書いてありますね.じゃあやっぱり 生成時の話→コンストラクタ でいいのかも.

閉鎖

“C言語何でも質問掲示板” へ戻る