c++ - std::vector 默认未初始化 ctor
问题描述
在类的默认 ctor 中初始化 std::vector 时,我遇到了 GCC-4.8 的一些奇怪行为。我的代码如下:
class TestLogger final: public Logger
{
public:
void LogWarning(const std::string& msg,) const override{
this->mWarningMessages.emplace_back(msg);
}
bool ContainsWarnings() const{
return !this->mWarningMessages.empty();
}
private:
mutable std::vector<std::string> mWarningMessages; // needs to be mutable because it's changed by const method
};
如果我使用我班级的某个对象会发生什么TestLogger
?该成员mWarningMessages
似乎没有被初始化。
请参见以下代码:
int main(int argc, char *arcv[])
{
TestLogger logger;
bool shouldBeFalse = logger.ContainsWarnings() // --> false expected, but returns true;
}
TestLogger
如果我在初始化列表中自己实现类的默认构造mWarningMessages
函数,一切都会完美。
有没有人知道为什么我的没有默认 ctor 的代码不起作用?我希望mWarningMessage
通过我的类的自动生成的默认 ctor 正确初始化TestLogger
。这可能是 GCC-4.8 中的错误吗?
谢谢你的帮助
解决方案
推荐阅读
- laravel - Laravel 在多个组和多个控制器中的相同路由
- java - 当我尝试在另一个活动的图像视图上显示图像时应用程序崩溃
- java - 如何正确设计 Spring 组件?
- javascript - Chart.js - 使 x 轴按天分组
- python - Python 中的尺寸不一致(有时显示 1D,有时显示 3D)
- javascript - 如何实现与 Service Worker 和客户端网页的有效双向通信
- java - @Autowired 字段在 @Component 类中为空
- delphi - RichEdit 文本字体发生奇怪变化
- python - Selenium 在不使用 XPath 的情况下从已经给定的元素中查找近元素
- javascript - 在 React 中显示更新的状态