更新:结果是下面的代码实际运行。尽管我发现实际代码之间没有区别,但我的问题可能是无关紧要的。仍在弄清楚。
此简单的c ++代码在运行时异常失败。我认为我在映射的构造函数中缺少某种与访问相关的限制。我有这样定义的类]
class Child {
public:
Child() {
auto itr1 = this->child_map.begin(); // works
};
~Child() {};
std::map<int,int> child_map;
std::vector<int> child_vector;
};
class Parent {
public:
Parent();
~Parent() {};
Child child_one;
};
Parent::Parent() {
auto itr2 = this->child_one.child_vector.begin(); // works
auto itr3 = this->child_one.child_map.begin(); // null pointer exception
}
Parent parent_obj;
仅在父级构造函数上,在地图上调用迭代器失败。向量迭代器可以正常工作。我已经尝试过两种方式添加好友类,但仍然遇到相同的异常。如果我查看了源代码,则_Get_data()返回nullptr并在下面的_Lmost()调用中失败
_NODISCARD iterator begin() noexcept
{ // return iterator for beginning of mutable sequence
auto& _My_data = this->_Get_data();
return (iterator(_My_data._Lmost(), _STD addressof(_My_data)));
}
尝试过在线搜索,到目前为止没有运气。我在这里想念什么?
在类指针上有一个错误的内存集,它被忽略了。令人惊讶的是,仅std :: map迭代器因此失败]