例如:
class Neuron{
private:
class Dendrite{
private:
//ctor(Neuron& n){..}
Collateral& predecessor;
double Weight;
//public: getters setters
};
class Axon{
private:
class Collateral{
private:
Dendrite& successor;
public:
//ctor(Axon& a){..}
};
List<Collateral> collaterals;
public:
//ctor(Neuron& n){..}
void CreateNewCollateral(){
Collateral c;
this->collaterals.AddByValue(c);
}
};
List<Dendrite> dendrites;
};
我需要一个 Axon 来拥有Collateral
s 的集合,因为我想它们是其中的一部分。但每个树突也neuron.list
应该有一个引用(或指针)到一个对应的 Collateral 实例,该实例可以属于一个不同的神经元实例。对于每个 Neuron 实例,可以有不同的侧枝。
问题是,如果我在 Axon 的列表中添加足够多的新抵押品,它必须通过将其项目复制到一个new
object中来扩大自身O
,delete
现有 Items from并分配toE
的指针。现在所有复制的抵押品(在 Axon 中)的地址可能与 中不同,因为我还没有更新它们。我认为这可能会导致运行时错误,对吗?我该如何解决?O
E
dendrites.predecessor
编辑:这就是我实现 List::AddItemByValue() 的方式
long AddItemByValue(const T& item){
if((this->iLastItem+1)==this->Length){
T* tmp = new T[Length*2];
for(long i=0;i<=this->iLastItem;i++){
tmp[i] = this->element[i];
}
delete[] this->element;
this->element = tmp;
this->Length *= 2;
}
this->iLastItem++;
this->element[this->iLastItem] = item;
return this->iLastItem;
}