JSF.CAST.MBR.ORDER.ACCESS_SPEC

アクセス指定子で区切られた非静的データメンバーの割り当て順序についての仮定をアルゴリズムで行ってはなりません。この規則は、アクセス指定子で区切られた非静的データメンバーの順序に関する仮定をアプリケーションが行うことを禁止することを目的としています。

理論的根拠

アクセス指定子で区切られた非静的データメンバーの割り当て順序は不定です。

例 1

コピー
  class A
  {
  …
  protected: // a could be stored before b, or vice versa
      int32 a;
  private
      int32 b;
  };
  
  …
 
  // Bad: application assumes that objects of
  // type A will always have attribute a
  // stored before attribute b.
  A* a_ptr = static_cast<A*>(message_buffer_ptr);

例 2

コピー
  struct B
  {
      int32 a;
      int32 b;
  };
  …
  // Good: attributes in B not separated
  // by an access specifier
  B* b_ptr = static_cast<B*>(message_buffer_ptr);