Обновление: Оказывается, код ниже действительно работает. Моя проблема может быть чем-то не связанным, хотя я не вижу разницы между реальным кодом. Все еще выясняю.
Этот простой код на С ++ не выполняется во время выполнения, за исключением. Я думаю, что я пропускаю какое-то ограничение доступа в конструкторе для карт. У меня есть класс, определенный следующим образом:
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)));
}
, попытался выполнить поиск в Интернете, и пока не получилось. что мне здесь не хватает?