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不允许的。。。但从根本上讲,将一个私有静态常量变量赋给另一个不同类的变量似乎是不可能的。。。。