[C++] privateのメンバ変数の値を取得したい

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
Diabo
記事: 2
登録日時: 10年前

[C++] privateのメンバ変数の値を取得したい

#1

投稿記事 by Diabo » 10年前

現在C++のクラスを勉強中でコンソールゲームを作っています。

弾クラスとプレイヤクラスを作成しました。
弾の発射時にプレイヤのx座標とy座標を取得したいのですがプレイヤクラスの
privateメンバ変数にあるので取得ができません。
他クラスのprivateメンバ変数の値を取得する方法はないのでしょうか?
また、他によい方法があれば教えてもらえるとうれしいです。

アバター
へにっくす
記事: 634
登録日時: 12年前
住所: 東京都

Re: [C++] privateのメンバ変数の値を取得したい

#2

投稿記事 by へにっくす » 10年前

単純に考えると、プレイヤクラスに、弾を返してもらうメソッドを作ればいい気がします。
written by へにっくす

アバター
usao
記事: 1889
登録日時: 11年前

Re: [C++] privateのメンバ変数の値を取得したい

#3

投稿記事 by usao » 10年前

プレイヤの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〃
};

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 13年前
住所: 東海地方
連絡を取る:

Re: [C++] privateのメンバ変数の値を取得したい

#4

投稿記事 by softya(ソフト屋) » 10年前

> 他クラスのprivateメンバ変数の値を取得する方法はないのでしょうか?

わざわざprivateしている訳ですので、座標を戻すメソッドを新設したほうが良いでしょう。
私としてはx,yは一塊なので戻り値を構造体で返すのをおすすめします。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

ISLe
記事: 2650
登録日時: 13年前
連絡を取る:

Re: [C++] privateのメンバ変数の値を取得したい

#5

投稿記事 by ISLe » 10年前

プレイヤーの座標を元に、どこから弾が出るかを弾クラスが処理するのは、設計としてマズいのでは。

弾はプレイヤーに従属するものですから、へにっくすさんのおっしゃるように、プレイヤーが、弾(あるいは弾を発射する位置の基準となる座標)を返すメソッドを持つべきと思います。

アバター
usao
記事: 1889
登録日時: 11年前

Re: [C++] privateのメンバ変数の値を取得したい

#6

投稿記事 by usao » 10年前

オフトピック
単に
>他クラスのprivateメンバ変数の値を取得する方法はないのでしょうか?
というのが本題なんじゃないかな…とか.(件名もそんな感じだし)

ISLe
記事: 2650
登録日時: 13年前
連絡を取る:

Re: [C++] privateのメンバ変数の値を取得したい

#7

投稿記事 by ISLe » 10年前

>usaoさん
そういうことであれば

privateメンバ変数の参照かポインタを返すメンバ関数を用意し、その戻り値を保持して使えばいつでも外部からアクセスできます

という回答もOKということになりますかね。

C++のクラスを勉強中でコンソールゲームを作っている、という背景を考慮した回答をしたつもりですが。

Diabo
記事: 2
登録日時: 10年前

Re: [C++] privateのメンバ変数の値を取得したい

#8

投稿記事 by Diabo » 10年前

やはり座標を取得するメソッドを作るのが良いのでしょうか。
ISLe さんが書きました:プレイヤーの座標を元に、どこから弾が出るかを弾クラスが処理するのは、設計としてマズいのでは。

弾はプレイヤーに従属するものですから、へにっくすさんのおっしゃるように、プレイヤーが、弾(あるいは弾を発射する位置の基準となる座標)を返すメソッドを持つべきと思います。
確かにその通りです。ゲーム設計についても勉強していくことにしました。
みなさんありがとうございました。

閉鎖

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