成员初始化:GCC中的错误还是我的想法?

我有我的类的私人部分中定义的枚举types。 我也有一个这种types的成员定义。 当我尝试在构造函数体中初始化这个成员时,我在运行时遇到内存损坏问题。 当我通过相同的构造函数中的初始化列表来初始化它时,我不会得到内存损坏问题。 难道我做错了什么?

我将简化代码,如果它是一个GCC错误,我相信它是我组合/inheritance/特定类的组合,但我保证这抓住了问题的本质。 在初始化之前,没有任何东西使用这个成员variables,没有使用新创build的对象,直到它完全构build完成。 这个成员的初始化实际上是我在主体中做的第一件事,当内存损坏发生时,valgrind说它正在我初始化variables的那一行。 Valgrind说这是一个大小为4的无效写法。

相关标题代码:

private: enum StateOption{original = 0, blindside}; StateOption currentState; 

相关的.cpp代码(导致内存损坏和崩溃):

MyClass::MyClass(AClass* classPtr) : BaseClass(std::string("some_setting"),classPtr) { currentState = original; ... }
MyClass::MyClass(AClass* classPtr) : BaseClass(std::string("some_setting"),classPtr) { currentState = original; ... } 

相关的.cpp代码(不会导致内存损坏和崩溃):

MyClass::MyClass(AClass* classPtr) : BaseClass(std::string("some_setting"),classPtr), currentState(original) { ... }  

MyClass::MyClass(AClass* classPtr) : BaseClass(std::string("some_setting"),classPtr), currentState(original) { ... } 

编辑:看到我的“答案”是什么造成这一点。 阅读完之后,有谁能向我解释为什么会有所作为? 我没有更改标题中的任何内容,显然目标文件正在重build,因为我的打印语句出现时,我没有看到一个构build下的错误,但没有看到另一个构build下的错误?

作为一个很好的解释,我会把它标记为这个问题的答案。

Solutions Collecting From Web of "成员初始化:GCC中的错误还是我的想法?"