インターフェイスクラスの実装について

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

インターフェイスクラスの実装について

#1

投稿記事 by つくばさん » 7年前

c++でstgを作成しているつくばさんというものです。
インターフェイスクラスの実装について分からないことがあったため質問させていもらいました。
いま enemy class と player class を charMgr class で管理しています
しかし、enemy class でplayerの情報を得られるようにしながら player class で enemy の情報を得られるようにすることができなくて困っています
今書いているコードはこんな感じです

コード:

class Player : public IPlayerData{
protected:
 IEnemyData* mEnemyData;
 double x,y;
public:
 
 Player(IEnemyData* mEnemyData);
 
 void Init();
 void Update();
 void Draw();
 void Fin();

 double GetX();
 double GetY();
};

コード:

Player::Player(IEnemyData* EnemyData){
 mEnemyData=EnemyData;
}
void  Player::Init(){
}
 void Player::Update(){
}
 void Player::Draw(){
}
 void Player::Fin(){
}

 double Player::GetX(){
return x;
}
 double Player::GetY(){
return y;
}

コード:

class Enemy : public IEnemyData{
protected:
 IPlyaerData *mPlayerData;
 double x,y;
public:

 Enemy( IPlyaerData *PlayerData);

 void Init();
 void Update();
 void Draw();
 void Fin();

 double GetX();
 double GetY();
};

コード:

Enemy::Enemy( IPlyaerData *PlayerData){
 mPlayerData=PlayerData;
}
void  Enemy::Init(){
}
 void Enemy::Update(){
}
 void Enemy::Draw(){
}
 void Enemy::Fin(){
}

 double Enemy::GetX(){
return x;
}
 double Enemy::GetY(){
return y;
}

コード:

class EnemyData{
 double GetX();
 double GetY();
}

コード:

class PlayerData{
 double GetX();
 double GetY();
}

コード:

class CharMgr{
protected:
 Player* mPlayer;
 Enemy* mEnemy;

public:

 void Init();
 void Update();
 void Draw();
 void Fin();
}

コード:

CharMgr::CharMgr(){
 mPlayer=new Player();
 mEnemy=new Enemy(mPlayer);
//
//ここら辺がどうすればいいのがわからないです
}
void  CharMgr::Init(){
}
 void CharMgr::Update(){
}
 void CharMgr::Draw(){
}
 void CharMgr::Fin(){
}

初心者ですがよろしくお願いします。

hide

Re: インターフェイスクラスの実装について

#2

投稿記事 by hide » 7年前

プレイヤークラスと敵クラスでお互いに直接参照するのはやめたほうがいいです。
数が増えるだけどんどん参照しないといけないので無理が出ます。
コードの調整よりお互いに参照する必要がないように設計を直すのが先でしょう。

タンタル

Re: インターフェイスクラスの実装について

#3

投稿記事 by タンタル » 7年前

コンストラクタでインターフェースを与えようとせずに、コンストラクタは引数なしにして一度インスタンスを生成、
そのあとに別の関数(addInterfaceとか?)を作ってそれ経由でインターフェースを渡すのはどうでしょうか。

つくばさん
記事: 22
登録日時: 8年前

Re: インターフェイスクラスの実装について

#4

投稿記事 by つくばさん » 7年前

皆さん返信ありがとうございます。
今回はaddinterfaceを作成することで解決させていただきました。
ご協力ありがとうございました。

つくばさん
記事: 22
登録日時: 8年前

Re: インターフェイスクラスの実装について

#5

投稿記事 by つくばさん » 7年前

解決を忘れていました。
すみませんでした。

閉鎖

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