-3

この変数をグローバルに定義し、すべてのクラス定義を1つのcppファイルに入れることができますが、3つの異なるクラスに対して異なるファイルを作成したいので、グローバルに定義できません。

今、私はこの変数を1つのクラスAで定義し、残りの2つのクラスBとCでこのデータを使用したいと考えています。

どうすればこれを行うことができますか。事前に助けてくれてありがとう

4

3 に答える 3

0

public の get メソッドと set メソッドを使用して、クラス A の変数にアクセスできます。または、クラス A で public 変数を作成するだけです。

于 2012-07-09T14:12:02.960 に答える
0

友達が使える

class A
{
friend class B;
friend class C;
private:
int m_privateMember;
};

class B {
};

class C {
};

これで、B と C は A のプライベート メンバーにアクセスできます。

しかし、これは最善の方法ではありません。それを避けるようにしてください。

于 2012-07-09T14:55:44.103 に答える
0

または、この変数マップ データを新しいシングルトン クラスの一部として使用することもできます。残りの 3 つの異なるクラスは、get メソッドを使用してこのシングルトン クラスにアクセスできます。

ファイル: singleton.h

#include <iostream>
using namespace std;

class singletonClass
{
  public:
      singletonClass(){};
      ~singletonClass(){};

  //prevent copying and assignment
  singletonClass(singletonClass const &);
  void operator=(singletonClass const &);

  //use this to get instance of this class
  static singletonClass* getInstance()
  {
     if (NULL == m_Singleton)  //if this is the first time, new it!
        m_Singleton = new singletonClass;

     return m_Singleton;
  }

  int getData()
  {
     return data;
  }

  void setData(int input)
  {
      data = input;
  }
  private:
    static singletonClass* m_Singleton;  //ensure a single copy of this pointer
    int data;
 };
 //declare static variable as NULL
singletonClass* singletonClass::m_Singleton = NULL;

ファイル: ClassA.h

class ClassA
{
  public:
      ClassA(){};
      ~ClassA(){};

     int getVarFromSingleton()
     {
          m_Singleton = singletonClass::getInstance();  //get a pointer to the singletonClass
          return data = m_Singleton->getData();  //get data from singleton class and return this value
     }
  private:
     singletonClass* m_Singleton;  //declare a pointer to singletonClass
     int data;
 };

ファイル: main.cpp

int main()
{
singletonClass* DataInstance;
ClassA a;
int data;

DataInstance = singletonClass::getInstance();

DataInstance->setData(5);

data = a.getVarFromSingleton();

cout << "shared data: " << data << endl;

return 0;

}

于 2012-07-09T14:13:37.217 に答える