C++ 访问另一个类中的静态常量。
在类中声明和定义的静态常量变量。如何在同一项目中的另一个类的私有访问中访问它。可能吗C++ 访问另一个类中的静态常量。,c++,c++11,static,constants,C++,C++11,Static,Constants,在类中声明和定义的静态常量变量。如何在同一项目中的另一个类的私有访问中访问它。可能吗 //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; }; //he
//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 ?
在不削弱任何一个类的封装性的情况下,避免magic值重复的一种干净方法是将magic值移动到两个类都可以公开访问的不同位置 例如:
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;
};
请忽略数字1)、2)、3)等等。
friend
是您的朋友:)但如果可能的话,我会避免这样做。这可能是最好的方法,但我必须考虑MISRA规则,当我们使用名称空间时,我们必须使用“Using”指令(使用名称空间的名称),这也是MISRA不允许的。。。但从根本上讲,将一个私有静态常量变量赋给另一个不同类的变量似乎是不可能的。。。。