读取字符串的C ++错误

时间:2015-06-02 14:15:24

标签: c++

我正在尝试将数组添加到包含动态数组

的Object中

MyCollection.h

    template <typename T>
    MyCollection<T>::MyCollection(int size)
    {
        arraySize = size;
        anArray = new T[size];
    }

    template <typename T>
    MyCollection<T>::MyCollection(MyCollection<T>& coll)
    {
        arraySize = coll.arraySize;
        anArray = new T[arraySize];

        for (int i = 0; i < arraySize; i++)
        {
            SetValue(coll.GetValue(i), i);
        }
    }

    template <typename T>
    MyCollection<T>::MyCollection(T* myArray, int size)
    {
        anArray = myArray;
        arraySize = size;
    }




   template<typename T>
    void MyCollection<T>::AddAll(T pArray[], int size)
    {
        int plusSize = size - 1;
        int arrayIterator = 0;
        arraySize += size;


        for (int i = size; i < arraySize - plusSize; i++)
        {
            anArray[i] = pArray[arrayIterator];
            arrayIterator++;
        }

    }

主要

MyCollection<string> B = MyCollection<string>(new string[3], 3);
    B.SetValue("C", 0);
    B.SetValue("D", 1);
    B.SetValue("E", 2);

string C[3];
    C[0] = "X";
    C[1] = "Y";
    C[2] = "Z";

B.AddAll(C, 3);
    B.Display();

在AddAll方法中,我遇到了访问冲突的错误。当我添加手表anArray [i] =。有什么想法会发生这种情况吗?复制construcotr左右有问题吗?

1 个答案:

答案 0 :(得分:1)

coll = Elasticsearch() coll.update(index='stories-test',doc_type='news',id=hit.meta.id, body={"doc": {"stanford": 1, "parsed_sents": parsed }}) 中,您需要调整原始数组AddAll()的大小,没有调整大小(您只需更改anArray的数值,但不分配更多内存) 。所以你需要像

这样的东西
arraySize

您也可以考虑是否要将旧元素复制到新分配的数组中,在这种情况下,您首先必须使用临时指针重新分配,然后复制到其中,然后删除原始delete[] anArray; // ... anArray = new T[arraySize]; ,并且最后将临时指针指向原始anArray,如:

anArray