关于常量的问题

newvcusr 2003-12-11 11:26:58
class stack
{
public:
stack();
int Push(int Value);
int Pop();
static const int _MaxSize = 10;
private:

int _Top;
int _Stack[_MaxSize];
};

请问类stack里的_MaxSize定义有什么不对的地方吗?编译器给出了一下错误提示
d:\program files\microsoft visual studio\myprojects\1211\stack\stack.h(7) : error C2258: illegal pure syntax, must be '= 0'
...全文
32 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
DaNiao 2003-12-11
  • 打赏
  • 举报
回复
顺便问一下 你那有2003吗?能不能给我发一个?
DaNiao 2003-12-11
  • 打赏
  • 举报
回复
sorry是我想错了
chelsea(切尔西)说得对,在c++的早期实现里const变量被认为是一个确实的变量
(即对应一块内存间)但新标准中 要求c++编译器去理解const,而不是简单的作为变量使用
chelsea 2003-12-11
  • 打赏
  • 举报
回复
98, 2001 draft, 2003 都是这么说的

连vc7.1都不用,7.0就已经支持了
DaNiao 2003-12-11
  • 打赏
  • 举报
回复
to chelsea(切尔西):
c++标准的第几章说过他的那个是符合“标准”的
你手上拿的是哪个标准,是iso 98年标准吗?
DaNiao 2003-12-11
  • 打赏
  • 举报
回复
在类声明里的所有声明都被认为是extern的
所以你必须在一个适当的地方来实现:
stack.h:
class stack
{
public:
stack();
int Push(int Value);
int Pop();
static const int _MaxSize = 10;
private:

int _Top;
int _Stack[_MaxSize];
};

stack.cpp
const int stack::_MaxSize=10;
DaNiao 2003-12-11
  • 打赏
  • 举报
回复
在类声明里,得所有声明都被认为是extern的
所以你必须在一个适当的地方来实现:
stack.h:
class stack
{
public:
stack();
int Push(int Value);
int Pop();
static const int _MaxSize = 10;
private:

int _Top;
int _Stack[_MaxSize];
};

stack.cpp
const int stack::_MaxSize;
chelsea 2003-12-11
  • 打赏
  • 举报
回复
1,你的写法是符合C++标准的,只是你的编译器不支持,用VC 7.1吧

2,用enum代替

class stack
{
public:
stack();
int Push(int Value);
int Pop();
static enum { _MaxSize = 10 };
private:

int _Top;
int _Stack[_MaxSize];
};
layman2008 2003-12-11
  • 打赏
  • 举报
回复
静态成员不是这样赋值得

stack::_MaxSize = 10;

在main()前
inline 2003-12-11
  • 打赏
  • 举报
回复
//第一种改法:可能不是你的本意

const int _Max = 64;

class stack
{
public:
stack();
int Push(int Value);
int Pop();
static const int _MaxSize;
private:

int _Top;
int _Stack[_Max];
};
//静态成员不能在类定义内初始化,而是在类内声明,类外定义
const int stack::_MaxSize = 10;

//第二种改法:

const int _MaxSize = 10;

class stack
{
public:
stack();
int Push(int Value);
int Pop();
private:

int _Top;
int _Stack[_MaxSize];
};
newvcusr 2003-12-11
  • 打赏
  • 举报
回复
谢谢chelsea(切尔西)和大家

我的确是遵循标准C++来些的,然后在VC6.0里编译,看来应该是编译器不支持了。

64,639

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧