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
{ }
解决方案 »
- VC 中如何绘制无边框的矩形
- 程序在后台运行一段时间后崩溃,有调试信息,求各位指点指点
- UDP传输丢包问题
- 谁知道如何在xtream中隐藏和显示菜单栏
- 一个老问题,麻烦各位了。
- 有谁编译过粱的解霸2.0没有?
- 关于一个DCom服务器的执行问题,请各位多多提出宝贵意见?
- 请教:关于DCOM的运行机制问题。谢谢!
- puyinghua进来拿分
- 关于CCombox
- 我想给一对话框加个背景,在书上翻到说重OnEraseBkgnd()就行,我依书上的重载了下,但看不到效果,请好心人帮帮忙。
- 钩子程序出现问题“Cannot open include file: 'KeyboardHook.h'”。如何设置让CKeyboardHook包含到本工程里来?
class CmlObject : public CObject
{
enum {Version = 1}; //版本
}
另外,if (CmlObject::Version = 1) 应该是 if (CmlObject::Version == 1)把,^_^
标准C++语法下是正确的,用gcc可以编译。
VC6的编译器下不允许这样做,你现在明白为什么有这么多人说MS的编译器垃圾了吧?
VC的编译器有很多不是按标准做的
在类的实现文件里加入:const int CYourClass::Version=1;
class CmlObject : public CObject
{
DECLARE_SERIAL( CmlObject )
public:
CmlObject ();
virtual ~CmlObject fice();
static const int Version; //版本
};const int CmlObject::Version=1; // 此处进行赋值
不需要同成员访问
const int CmlObject::Version=1;
必须在外部显式初始化 const只能赋值一次除非修改其const属性
既然是常量,我觉得没必要搞成静态的吧,静态的目的在于使之只有一个拷贝,对这个拷贝的操作总是对同一对象的操作,而常量不可修改,那静态在这里还有什么意义嘛
一种方法就是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;
static const int i = 1;