我有一个变量map dataa ehich用于三个不同的class.i可以全局定义这个变量并将所有类defination放在一个cpp文件中但我想为三个不同的类制作不同的文件,因此无法全局定义它。
现在我想在一个类中定义这个变量说A然后想在剩下的两个类中使用这个数据,比如说B和C.
我怎么能这样做。提前感谢任何帮助
答案 0 :(得分:0)
您可以使用公共get和set方法访问A类中的变量。或者只是在A类中创建一个公共变量。
答案 1 :(得分:0)
或者,您可以尝试将此变量地图数据作为新单例类的一部分。 3个不同类的其余部分可以使用get方法
访问此单例类file: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;
}
答案 2 :(得分:0)
您可以使用朋友
class A
{
friend class B;
friend class C;
private:
int m_privateMember;
};
class B {
};
class C {
};
现在,B和C可以访问A的私人会员。
但这不是最好的方法。尽量避免它。