C++初始化错误 std::set
C++ badly initialized std::set
我在类中有一个公共变量,声明为
std::set<int> test;
并且从未显式初始化。当我尝试从对象的实例的共享指针c
访问它时:
std::set<int>& myset = c->test;
我在调试器中看到myset
初始化得很糟糕:它有两个字段_Myhead
和_Mysize
空。你能解释一下为什么会这样吗?
你正在使用 std::set<>,它有自己的构造函数来初始化内部数据。所以空是可以的。
问题是指针没有正确初始化,尽管我认为是这样。
我很困惑,因为我来自 Java,在 Java 中,空指针会在不让我检查对象内部变量的情况下生成异常,所以我过早地排除了该选项!
相关文章:
- 在声明中合并两个常量"std::set"(不是在运行时)
- 有没有办法对std::unordered_set、std::unrdered_map、std::set、std::map
- 将 std::set 与基于键的比较器一起使用
- 修改"std::set"中用户定义类型的值
- 如何在构造函数参数中初始化"std::set"?
- 如何使用 lower_bound/upper_bound 从 std::set 获取索引号?
- 如何在 C++ 中转发声明 std::set?
- 重构使用动态强制转换的 std::set 的比较运算符
- 为什么 std::set.erase(first, last) 会影响从中获取 (first, last) 的容器?
- 将 std:set<int32_t> 复制到 std::set <uint32_t>的好方法
- 错误 C2676:std::set::const_iterator 没有运算符 + 函数?
- std::set 是否将对象连续存储在内存中?
- google test PrintTo for std::set<std::string>
- 不能对 std::set<std::string, std::less 使用用户提供的比较函数<>>
- "Flattening" std::set<std::string> 用于存储和比较?
- C++ std::map<std::string, std::set<std::string>> .如何循环设置值?
- 在std::set/std::map中存储具有多个不同类型字段的c++对象的有效方法
- 在C++中迭代 std::set<std::string> 时出现分段错误
- 从声明为 std::set<std::shared_ptr> edges_ 的edges_中删除边<Edge>;
- 将基于范围的 for 与 std::set<std::unique_ptr <T>一起使用>已删除函数