从封闭类访问std :: map迭代器失败

问题描述 投票:-1回答:1

更新:结果是下面的代码实际运行。尽管我发现实际代码之间没有区别,但我的问题可能是无关紧要的。仍在弄清楚。

此简单的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)));
    }

尝试过在线搜索,到目前为止没有运气。我在这里想念什么?

c++ inner-classes stdmap
1个回答
0
投票

在类指针上有一个错误的内存集,它被忽略了。令人惊讶的是,仅std :: map迭代器因此失败]

© www.soinside.com 2019 - 2024. All rights reserved.