代码之家  ›  专栏  ›  技术社区  ›  Björn Pollex

使用成员初始化成员

  •  4
  • Björn Pollex  · 技术社区  · 15 年前

    struct A {
        int m_SomeNumber;
    };
    
    struct B {
        B( A & RequiredObject );
    private:
        A & m_RequiredObject;
    };
    
    struct C {
        C( );
    private:
        A m_ObjectA;
        B m_ObjectB;
    };
    

    C 看起来像这样:

    C::C( )
     : B( m_ObjectA )
    { }
    

    m_ObjectA 当的构造函数 m_ObjectB 调用,导致未定义的行为。强制执行特定初始化顺序的一种方法是使成员成为指针并在构造函数体中初始化它们,从而强制执行正确的顺序,但这有几个原因。有没有办法使用构造函数的初始化列表强制执行某个初始化顺序?如果没有,你有什么其他的建议如何处理这个问题。

    1 回复  |  直到 14 年前
        1
  •  12
  •   Konrad Rudolph    15 年前

    因为没有定义初始化的顺序

    推荐文章