【问题标题】:Access static const in another class.在另一个类中访问静态常量。
【发布时间】:2014-01-08 11:35:08
【问题描述】:

在类中声明和定义的静态常量变量。如何在同一项目中另一个类的私有访问中访问它。是否可以?

//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 ?

【问题讨论】:

  • 请忽略数字 1)、2)、3) 等。
  • friend 是你的朋友 :) 但如果可能的话,我会避免这样做。

标签: c++ c++11 static constants


【解决方案1】:

在不削弱任何一个类的封装的情况下避免重复魔法值的一种干净方法是将魔法值移动到两个类都可以公开访问的不同位置。

例如:

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;
};

【讨论】:

  • 这可能是最好的方法,但我必须考虑 MISRA 规则,当我们使用命名空间时,我们必须使用 MISRA 再次不允许的“使用”指令(使用命名空间 NameoftheNamespace) ...但从根本上说,将一个 Private static const 变量赋予另一个不同的类似乎是不可能的......
猜你喜欢
  • 2012-09-06
  • 1970-01-01
  • 2012-05-04
  • 1970-01-01
  • 1970-01-01
  • 2014-11-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多