0

例如:

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 来拥有Collaterals 的集合,因为我想它们是其中的一部分。但每个树突也neuron.list应该有一个引用(或指针)到一个对应的 Collat​​eral 实例,该实例可以属于一个不同的神经元实例。对于每个 Neuron 实例,可以有不同的侧枝。
问题是,如果我在 Axon 的列表中添加足够多的新抵押品,它必须通过将其项目复制到一个newobject中来扩大自身Odelete现有 Items from并分配toE的指针。现在所有复制的抵押品(在 Axon 中)的地址可能与 中不同,因为我还没有更新它们。我认为这可能会导致运行时错误,对吗?我该如何解决?OEdendrites.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;
}
4

0 回答 0