2012-07-09 82 views
-3

我有一個變量映射數據ehich在三個不同的類中使用。我可以全局定義這個變量,並將所有類定義在一個cpp文件中,但我想爲三個不同的文件不同的階級,因此不能全球定義它。訪問其他類函數中的類變量C++

現在我要定義一個類此變量說A,然後希望在剩餘的兩個類中使用這個DataA的說,B和C.

我該怎麼辦了anyhelp this.thanks提前

+5

最近大量的懶惰和不良的公式化,並提出問題發佈到SO是驚人的。 – mloskot 2012-07-09 14:16:56

+0

你需要[一本好書](http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list)。 – molbdnilo 2012-07-09 14:52:49

回答

0

您可以使用public get和set方法來訪問A類中的變量。或者簡單地在A類中創建一個公共變量。

+0

我已經將該變量聲明爲靜態地圖 dataa;根據我在一些地方看到的答案,但是這不是幫助,我不知道這個get set method.please幫助我與一個例子 – Mcolorz 2012-07-09 14:13:39

0

或者,您可以嘗試將此變量映射數據作爲新的單例類的一部分。 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; 

}

+0

請給這個例子get method.i不知道it.thanks – Mcolorz 2012-07-09 14:15:18

0

您可以使用朋友

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

class B { 
}; 

class C { 
}; 

現在,B和C可訪問的私有成員。

但這不是最好的方法。儘量避免它。