gpt4 book ai didi

c++ - 如何修复使用变量初始化数组时的错误?

转载 作者:行者123 更新时间:2023-11-28 05:51:59 24 4
gpt4 key购买 nike

我正在尝试使用数组实现堆栈。这就是我的头文件。我打算在构造函数中将值赋给maxsize。但是,我不断收到错误。我该如何解决这个问题?

class stack {


private:

const int maxsize;
int arrays[maxsize];
int top;

public:

stack();
void additem(int);
void print();
};

最佳答案

一个好的解决办法是:

class stack
{
std::vector<int> arrays;
int top;

public:
stack(int maxsize) : arrays(maxsize), top(0) {}
};

这样,您就没有任何内存管理错误的可能性;您的类在复制、移动、交换等操作时表现正常,并且您的代码非常简单。

另一种内存占用最少的方法是:

class stack
{
std::unique_ptr<int[]> arrays;
int maxsize;
int top;

public:
stack(int maxsize) : arrays(new int[maxsize]), maxsize(maxsize), top(0) {}
};

此版本是可移动的,但在复制时会出现编译错误(与其他一些使用原始指针的建议相反,后者会成功编译,然后在运行时出现内存损坏)。要使此类可复制,您需要编写自己的复制构造函数和复制赋值运算符。

关于c++ - 如何修复使用变量初始化数组时的错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35049626/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com