使用static const int size=100为什么会报错?
最近在学const的用法,在VC++上调试出现了点小问题:书上说enum{size=100}; 和 static const int size=100; 效果是一样的,为什么我在VC++上用前者可以通过,但用后者就会报错呢?有没有人知道为什么?代码如下:
#include<iostream>
#include<string>
using namespace std;
class StringStack
{
enum{size=100};//能够正常运行
//static const int size=100;//Error!显示5个错误
const string *stack[size];
int index;
public:
StringStack();
void push(const string *s);
const string *pop();
};
StringStack::StringStack():index(0)
{
memset(stack,0,size*sizeof(string*));
}
void StringStack::push(const string*s)
{
if(index<size)
stack[index++]=s;
}
const string *StringStack::pop()
{
if(index>0)
{
const string* rv=stack[--index];
stack[index]=0;
return rv;
}
return 0;
}
string icenu[]={"hello","the world","how much","thankyou","very good"};
const int icenum=sizeof icenu/sizeof *icenu;
void main()
{
StringStack ss;
for(int i=0;i<icenum;i++)
ss.push(&icenu[i]);
const string* cp;
while((cp=ss.pop())!=0)
cout<<*cp<<endl;
}