博客园  :: 首页  :: 联系 :: 管理

类里面定义数组常量的问题

Posted on 2008-11-26 13:53  sunrack  阅读(626)  评论(0编辑  收藏  举报
这个是做不到的。  
  但可以从设计上作一些折衷,  
  (1)假如你是想定义一些该类的所有对象都共享的“常量”,那么可以声明成static   const,然后在类外初始化:  
  class   MyClass  
  {  
  public:  
  MyClass();  
  private:  
  static   const   COLORREF   m_color[3];  
  };  
   
  const   COLORREF   MyClass::m_color[3]   =   {0xff,   0xff00,   0xff0000};  
   
  (2)如果你是想为类的每个对象定义“只读”变量,那么就不要定义成const,而是使用一般的数组,然后只提供一个public的“get”方法,不要提供“set”方法就是了——这样只需要在构造函数里初始化一次,以后就只读的了:  
  class   MyClass  
  {  
  public:  
  MyClass();  
  const   COLORREF*   getColorRef()   const;  
  private:  
  COLORREF   m_color[3];  
  };  
   
  MyClass::MyClass()   {  
  m_color[0]   =   0xff;  
  m_color[1]   =   0xff00;  
  m_color[2]   =   0xff0000;  
  }  
   
  const   COLORREF*   MyClass::getColorRef()   const   {  
  return   m_color;  
  }