gpt4 book ai didi

c++ - 错误 : invalid use of non-static data member 'capacity' int data[capacity];

转载 作者:太空宇宙 更新时间:2023-11-04 15:02:12 26 4
gpt4 key购买 nike

我不明白为什么数据是导致我出现问题的唯一私有(private)变量。本来我以为我可以通过在构造函数中第一次声明变量来解决问题,但我觉得必须有一种方法可以私下定义变量,然后在构造函数中设置它们而不会出现任何问题。我该如何解决?另外,无效使用非静态数据内存是什么意思?

#include <cassert>
#include <iostream>
#include <vector>
using namespace std;

class stack{
private:
int capacity;
int data[capacity];
int top;
int bottom;


public:
stack(){
top=0;
bottom=0;
capacity=100;
}

bool isEmpty(){
return top==bottom;
}

int pop(stack S){
//assert(!isEmpty());
int elem = data[top];
top--;
return elem;
}

void push(stack S,int x){
assert(top<capacity-1);
top++;
data[top]=x;
return;
}

};

int main()
{
return 0;
}

最佳答案

标准 C++ 中不允许使用变长数组。使用动态数组,或者更好,std::vector<int> data(capacity) .

此外,您应该使用构造函数初始化列表来初始化您的成员变量,

stack(): capacity(100), data(capacity), top(0), bottom(0){} // assuming you use `std::vector<int> data;`

如果您不能使用 std::vector (作业,否则你应该!),然后你可以使用动态数组

int* data;

并将你的构造函数声明为

stack(): capacity(100), data(new int[capacity]), top(0), bottom(0){}

然后,你必须声明一个析构函数

~stack() { delete[] data;} 

所以你没有内存泄漏。接下来你还应该定义你的复制构造函数和赋值运算符,所以事情变得有点复杂。只需使用 std::vector<int>如果可以的话。

关于c++ - 错误 : invalid use of non-static data member 'capacity' int data[capacity];,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30250518/

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