この変数をグローバルに定義し、すべてのクラス定義を1つのcppファイルに入れることができますが、3つの異なるクラスに対して異なるファイルを作成したいので、グローバルに定義できません。
今、私はこの変数を1つのクラスAで定義し、残りの2つのクラスBとCでこのデータを使用したいと考えています。
どうすればこれを行うことができますか。事前に助けてくれてありがとう
public の get メソッドと set メソッドを使用して、クラス A の変数にアクセスできます。または、クラス A で public 変数を作成するだけです。
友達が使える
class A
{
friend class B;
friend class C;
private:
int m_privateMember;
};
class B {
};
class C {
};
これで、B と C は A のプライベート メンバーにアクセスできます。
しかし、これは最善の方法ではありません。それを避けるようにしてください。
または、この変数マップ データを新しいシングルトン クラスの一部として使用することもできます。残りの 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;
}