【发布时间】:2015-05-15 02:21:27
【问题描述】:
我不明白为什么 data 是唯一给我带来问题的私有变量。本来我以为可以通过在构造函数中第一次声明变量来解决问题,但我觉得必须有一种方法可以私下定义变量,然后在构造函数中设置它们没有任何问题。我该如何解决?另外,非法使用非静态数据内存是什么意思?
#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;
}
【问题讨论】:
-
kalkid,只是出于兴趣,如果您不允许使用向量(根据您的 cmets 之一),为什么您的代码中有
#include <vector>? :-) 并确保您理解,除非设置了 NDEBUG,否则断言没有任何好处。它们非常适合在开发过程中发现问题(或家庭作业),但对于健壮的代码,它们并不是最好的。 -
@paxdiablo 不是反过来吗,即
#define NDEBUG禁用断言? -
@vsoftco,抱歉,你是对的。这只是表明我使用了多少断言:-)
标签: c++