【发布时间】:2015-09-21 21:02:59
【问题描述】:
我有两个类,Node 和 Bond;创建新键时,我想在键的每一侧的节点中添加对“adjBonds”向量的引用(从化学意义上考虑,键连接两个原子) 我找不到获取对当前类(节点)的引用的方法;我必须使用指针吗?我该怎么做?
另外,如果 std::vectors 在类中声明,我是否必须清理它们?我必须先清理这些向量中的引用,还是引用不需要内存管理?
class Node
{
public:
std::vector<Bond &> m_adjBonds;
ELEMENT m_element;
Node(ELEMENT element)
:m_element(element)
{
}
};
class Bond
{
public:
int m_bondNumber;
Node &m_end1;
Node &m_end2;
Bond(int bondNumber, Node &end1, Node& end2)
:m_end1(end1), m_end2(end2), m_bondNumber(bondNumber)
{
m_end1.m_adjBonds.push_back(this);
}
};
编译器在“this”上返回错误,说“对非常量的引用的初始值必须是左值”,但我不确定这是什么意思。
【问题讨论】:
-
一切都有明确定义的生命周期。它要么是全局的并且始终存在,要么使用 new 手动分配并且存在直到它被删除,要么存在于当前堆栈帧中。换句话说,如果没有更多信息,就不可能知道何时应该清理向量中的引用/指针。
标签: c++ class vector reference