当前位置:  开发笔记 > 编程语言 > 正文

指针不会在类成员函数中被修改

如何解决《指针不会在类成员函数中被修改》经验,为你挑选了1个好方法。

我正在制作一个包含模板和类的动态数组.

这是我遇到问题的代码:

template
class GArray
{
   GType* array_type = nullptr;
   int size = 0;

public:
GArray(GType Size)
{
    size = Size;
    array_type = new GType[size];

    for (int i = 0; i < size; i++)
        array_type[i] = NULL;
}

void Push(GType Item)
{
    size++;

    GType* temp = new GType[size];

    for (int i = 0; i < size-1; i++)
        temp[i] = array_type[i];

    temp[size] = Item;

    delete[] array_type;
    array_type = temp;
    temp = nullptr;
}

GType& operator[] (int Index)
{
    if (Index >= 0 && Index < size)
        return array_type[Index];
}
};

int main()
{
GArray arr(2);
arr[0] = 10;
arr[1] = 20;
arr.Push(30);


// print array
for (int i = 0; i < arr.Size(); i++)
    cout << arr[i] << endl;

return 0;
}

在main()中,当我打印整个数组值时,最后一个(应该是30)是一个未定义的值(如-842150451).

通过几个测试,我可以说INSIDE的Push()函数,array_type指针改变了.当我回到main()时,它就像array_type没有改变,它和以前一样.



1> Adi Levin..:

错误的原因是

temp[size] = Item

是错的.它应该被替换为

temp[size-1] = Item

推荐阅读
喜生-Da
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有