我有一個變量映射數據ehich在三個不同的類中使用。我可以全局定義這個變量,並將所有類定義在一個cpp文件中,但我想爲三個不同的文件不同的階級,因此不能全球定義它。訪問其他類函數中的類變量C++
現在我要定義一個類此變量說A,然後希望在剩餘的兩個類中使用這個DataA的說,B和C.
我該怎麼辦了anyhelp this.thanks提前
我有一個變量映射數據ehich在三個不同的類中使用。我可以全局定義這個變量,並將所有類定義在一個cpp文件中,但我想爲三個不同的文件不同的階級,因此不能全球定義它。訪問其他類函數中的類變量C++
現在我要定義一個類此變量說A,然後希望在剩餘的兩個類中使用這個DataA的說,B和C.
我該怎麼辦了anyhelp this.thanks提前
您可以使用public get和set方法來訪問A類中的變量。或者簡單地在A類中創建一個公共變量。
我已經將該變量聲明爲靜態地圖
或者,您可以嘗試將此變量映射數據作爲新的單例類的一部分。 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;
文件:您3個不同類別的其他部分可以使用get方法
文件訪問此singleton類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;
}
請給這個例子get method.i不知道it.thanks – Mcolorz 2012-07-09 14:15:18
您可以使用朋友
class A
{
friend class B;
friend class C;
private:
int m_privateMember;
};
class B {
};
class C {
};
現在,B和C可訪問的私有成員。
但這不是最好的方法。儘量避免它。
最近大量的懶惰和不良的公式化,並提出問題發佈到SO是驚人的。 – mloskot 2012-07-09 14:16:56
你需要[一本好書](http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list)。 – molbdnilo 2012-07-09 14:52:49