这是我宣布我的向量的方式:
std::vector <Link *> _components;
链接是这种结构:
struct Link
{
size_t targetPin;
nts::IComponent *component;
};
首先将其初始化为
this->_components.reserve(2);
然后,当这个指令发生时,它会发生段错误
this->_components[0]->component = this;
有个主意吗?
答案 0 :(得分:2)
Reserve会扩展向量的容量,它实际上不会增加大小,访问超出大小的成员是非法的。
this->_components.resize(2);
是你似乎需要的。
如果您的向量的固定大小为2,则可能需要考虑使用std::array
。
---编辑---
您的第二个问题是您尚未向任何成员分配Link*
。他们是空指针。
除非您有std::vector<Link>
个对象用指针填充向量,否则您可能需要std::vector<Link*>
而不是Link
。