2014-01-08 58 views
0

在類中聲明和定義的靜態常量變量。如何在同一個項目的另一個班級的私人訪問中訪問它。可能嗎?在另一個類中訪問靜態常量。

//in some header file 
Class A{ 
    public: 
    //some data 

    private: 
     static const uint8_t AVar =1; 
     //other data 
}; 


//in some another header file 
Class B{ 
    static const Bvar; 
}; 
//here inside Class B it possible to give Bvar = AVar ? If yes, How ? 
+0

請忽視的數字1),2),3)等。 –

+1

'朋友'是你的朋友:)但如果可能的話,我會避免這種情況。 –

回答

2

一個乾淨的方式,以避免魔法值的重複不削弱任何類的封裝是魔法值移動到不同的地方,是兩個類公開訪問。

例如:

namespace detail { 
    enum MAGIC_NUMBER_T { 
     MAGIC_NUMBER = 1 
    }; 
} 

class A{ 
    private: 
    static const uint8_t AVar = detail::MAGIC_NUMBER; 
}; 

class B{ 
    static const uint8_t BVar = detail::MAGIC_NUMBER; 
}; 
+0

謝謝ComicSansMS –

+0

這可能是最好的方法,但我必須考慮到MISRA規則,而在使用命名空間時,我們必須使用'使用'指令(使用命名空間名稱命名空間),這是MISRA不允許的。但從根本上看,不可能將一個私有靜態常量變量賦予另一個不同的類別.... –