0

クラスAの変数からクラスBの変数に、またはその逆にアクセスできるように、2つのクラスの変数を使用しようとしています。しかし、私は可能な解決策を見つけることができません。常にループになるか、次のエラーが発生します。

エラー:非静的データメンバーの無効な使用

コードサンプルは次のとおりです。

Player.h:

#ifndef _PLAYER_H_
  #define _PLAYER_H_

#include "Segment/Dynamic_Segment.h"

class Attributes_P;
class Player;

class Attributes_P : public Attributes_DS{
  protected:
  Player *rel;
  int inv_mcols, inv_mrows;

  public:
  Attributes_P();
  void controls( int MKEY_UP, int MKEY_RIGHT, int MKEY_DOWN, int MKEY_LEFT );
  void inventory( int inv_mcols, int inv_mrows );
};

class Player : public Dynamic_Segment{
  protected:
  int   **inv;

  public:

  int   MKEY_UP, MKEY_RIGHT, MKEY_DOWN, MKEY_LEFT;

  public:

  Player();
  Attributes_P set;
  friend class Core;
  friend class Attributes_P;

};
#endif

Player.cpp:

#include "Segment/Player.h"

Attributes_P::Attributes_P(){};

Player::Player() : Dynamic_Segment(){
  set.inv_mcols = 0;
  set.inv_mrows = 0;
}

void Attributes_P::inventory( int inv_mcols, int inv_mrows ) {
  this->inv_mcols = inv_mcols;
  this->inv_mrows = inv_mrows;
  &rel.inv = new int*[this->inv_mcols];
  for( int i = 0; i < this->inv_mrows; i++ ) {
    &rel.inv[i] = new int[this->inv_mcols];
  }
}

void Attributes_P::controls( int MKEY_UP, int MKEY_RIGHT, int MKEY_DOWN, int MKEY_LEFT ) {
  &rel.MKEY_UP = MKEY_UP;
  &rel.MKEY_RIGHT = MKEY_RIGHT;
  &rel.MKEY_DOWN = MKEY_DOWN;
  &rel.MKEY_LEFT = MKEY_LEFT;
}

しばらくの間、壁に頭をぶつけてきました...どんなアイデアでもいただければ幸いです。

4

1 に答える 1

5

わかりました。私はそれだと思います

&rel.

する必要があります

rel->

すなわち

rel->MKEY_UP = MKEY_UP;

意味(*rel).MKEY_UPですか?これも機能します。

于 2013-01-11T16:50:36.430 に答える