static const int version=1; 有没有这个的写法

mrlong 2005-10-22 11:13:31

class CmlObject : public CObject
{
DECLARE_SERIAL( CmlObject )
public:
CmlObject ();
virtual ~CmlObject fice();
static const int Version = 1; //版本
}

static const int Version = 1; 的词法对不对

本人的目的是定一个能class能访问的,又是class内本身的常量.

if (CmlObject::Version = 1)
{

}
else
{

}
...全文
211 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
femalelover 2005-10-22
  • 打赏
  • 举报
回复
即是静态又是常量,常量一般得立即置值吧,不然就成了变量,可类中声明又不允许置值,好像有点MAO盾.
goodluckyxl 2005-10-22
  • 打赏
  • 举报
回复
静态的变量是共享的
不需要同成员访问
const int CmlObject::Version=1;
必须在外部显式初始化 const只能赋值一次除非修改其const属性
zxyjyzxyjy 2005-10-22
  • 打赏
  • 举报
回复
在VC6下编译能通过啊。

不过有点怪,作为类的const应该在构造函数中初始化的,可又是静态又是常量的,如上也行。
flyelf 2005-10-22
  • 打赏
  • 举报
回复
在vc6下要这么写
class CmlObject : public CObject
{
DECLARE_SERIAL( CmlObject )
public:
CmlObject ();
virtual ~CmlObject fice();
static const int Version; //版本
};

const int CmlObject::Version=1; // 此处进行赋值
zxyjyzxyjy 2005-10-22
  • 打赏
  • 举报
回复
对不起,不能这样写,你的是在类申明中,在申明中是不能赋值的。

类申明中:

static const int Version; //版本
在类的实现文件里加入:

const int CYourClass::Version=1;
i_noname 2005-10-22
  • 打赏
  • 举报
回复
static const int Version = 1;
标准C++语法下是正确的,用gcc可以编译。
VC6的编译器下不允许这样做,你现在明白为什么有这么多人说MS的编译器垃圾了吧?
VC的编译器有很多不是按标准做的
zxyjyzxyjy 2005-10-22
  • 打赏
  • 举报
回复
应该可以这样写。
注意楼上说的条件表达式。
balloy 2005-10-22
  • 打赏
  • 举报
回复
如果是常量,可以用
class CmlObject : public CObject
{
enum {Version = 1}; //版本
}


另外,if (CmlObject::Version = 1) 应该是 if (CmlObject::Version == 1)把,^_^
oyljerry 2005-10-22
  • 打赏
  • 举报
回复
标准的,也支持在类的申明中
static const int i = 1;
oyljerry 2005-10-22
  • 打赏
  • 举报
回复
(4)如何初始化类内部的常量?
一种方法就是static 和 const 并用,在内部初始化,如上面的例子;
另一个很常见的方法就是初始化列表:
class A
{
public:
A(int i=0):test(i) {}
private:
const int i;
};
还有一种方式就是在外部初始化,例如:
class A
{
public:
A() {}
private:
static const int i; file://注/意必须是静态的!
};
const int A::i=3;
oyljerry 2005-10-22
  • 打赏
  • 举报
回复
静态变量全局初始化
femalelover 2005-10-22
  • 打赏
  • 举报
回复
看错了,还以为你的VERSION是类的成员
既然是常量,我觉得没必要搞成静态的吧,静态的目的在于使之只有一个拷贝,对这个拷贝的操作总是对同一对象的操作,而常量不可修改,那静态在这里还有什么意义嘛

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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