ページ 1 / 1
[C++] privateのメンバ変数の値を取得したい
Posted: 2013年12月18日(水) 03:30
by Diabo
現在C++のクラスを勉強中でコンソールゲームを作っています。
弾クラスとプレイヤクラスを作成しました。
弾の発射時にプレイヤのx座標とy座標を取得したいのですがプレイヤクラスの
privateメンバ変数にあるので取得ができません。
他クラスのprivateメンバ変数の値を取得する方法はないのでしょうか?
また、他によい方法があれば教えてもらえるとうれしいです。
Re: [C++] privateのメンバ変数の値を取得したい
Posted: 2013年12月18日(水) 05:07
by へにっくす
単純に考えると、プレイヤクラスに、弾を返してもらうメソッドを作ればいい気がします。
Re: [C++] privateのメンバ変数の値を取得したい
Posted: 2013年12月18日(水) 09:24
by usao
プレイヤのx座標,y座標を取得するためのpublicなメソッド を用意する
のが 最も素直(?)な気がします.
コード:
class CPlayer
{
private:
int m_X; //X座標
int m_Y; //Y座標
public:
int GetX() const { return m_X; } //X座標を知る方法を提供
int GetY() const { return m_Y; } //Y〃
};
Re: [C++] privateのメンバ変数の値を取得したい
Posted: 2013年12月18日(水) 11:41
by softya(ソフト屋)
> 他クラスのprivateメンバ変数の値を取得する方法はないのでしょうか?
わざわざprivateしている訳ですので、座標を戻すメソッドを新設したほうが良いでしょう。
私としてはx,yは一塊なので戻り値を構造体で返すのをおすすめします。
Re: [C++] privateのメンバ変数の値を取得したい
Posted: 2013年12月18日(水) 17:13
by ISLe
プレイヤーの座標を元に、どこから弾が出るかを弾クラスが処理するのは、設計としてマズいのでは。
弾はプレイヤーに従属するものですから、へにっくすさんのおっしゃるように、プレイヤーが、弾(あるいは弾を発射する位置の基準となる座標)を返すメソッドを持つべきと思います。
Re: [C++] privateのメンバ変数の値を取得したい
Posted: 2013年12月18日(水) 18:31
by usao
オフトピック
単に
>他クラスのprivateメンバ変数の値を取得する方法はないのでしょうか?
というのが本題なんじゃないかな…とか.(件名もそんな感じだし)
Re: [C++] privateのメンバ変数の値を取得したい
Posted: 2013年12月18日(水) 19:17
by ISLe
>usaoさん
そういうことであれば
privateメンバ変数の参照かポインタを返すメンバ関数を用意し、その戻り値を保持して使えばいつでも外部からアクセスできます
という回答もOKということになりますかね。
C++のクラスを勉強中でコンソールゲームを作っている、という背景を考慮した回答をしたつもりですが。
Re: [C++] privateのメンバ変数の値を取得したい
Posted: 2013年12月19日(木) 05:32
by Diabo
やはり座標を取得するメソッドを作るのが良いのでしょうか。
ISLe さんが書きました:プレイヤーの座標を元に、どこから弾が出るかを弾クラスが処理するのは、設計としてマズいのでは。
弾はプレイヤーに従属するものですから、へにっくすさんのおっしゃるように、プレイヤーが、弾(あるいは弾を発射する位置の基準となる座標)を返すメソッドを持つべきと思います。
確かにその通りです。ゲーム設計についても勉強していくことにしました。
みなさんありがとうございました。