通过使用以下类在C++中实例化对象,我会遇到分段错误或异常中止,具体取决于声明成员变量的顺序。例如将mMemberVar和mAnotherMemberVar放在mAnotherCountVar之后会导致段错误。从此 list 中,我从成员变量中删除了std::ofstream,这导致了分段错误,而与它的位置无关。

我认为顺序不是直接的问题,但是您认为原因可能是什么?此类是一个庞大项目的一部分,但是在此类中,错误是第一次出现的地方。

class COneClass : public IInterface
{
public:

  COneClass();

  virtual ~COneClass();

  static const unsigned int sStaticVar;
  static const unsigned int sAnotherStaticVar;


private:
  COneClass();
  COneClass(const COneClass& );
  COneClass& operator=(const COneClass& );

  int mMemberVar;
  int mAnotherMemberVar;
  bool mIsActive;
  bool mBoolMemberVar;
  bool mAnotherBoolMemberVar;
  unsigned int mCountVar;
  unsigned int mAnotherCountVar;
};

COneClass::COneClass() :
  mMemberVar(0),
  mAnotherMemberVar(0),
  mIsActive(false),
  mBoolMemberVar(false),
  mAnotherBoolMemberVar(false),
  mCountVar(sStaticVar),
  mAnotherCountVar(sAnotherStaticVar)
{
}

最佳答案

类成员通过声明的顺序初始化。初始化列表中的顺序无关紧要。您的情况是这样的:
mMemberVar-> mAnotherMemberVar-> mIsActive-> mBoolMemberVar-> mAnotherBoolMemberVar-> mCountVar-> mAnotherCountVar;

08-17 00:26