通过使用以下类在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;