我从沉重的java背景进入c ++。
你如何拥有与班级相关的常数? 如果它是Java,那就像
public class Example{
public static final int CONSTANT = 0;
}
public static void main (String[] args){
System.out.println(Example.CONSTANT);
}
结果只是0。
在c ++中我到目前为止已经想到了:
class Example{
const int LEVEL_INF;
}
这是正确的吗? 即使是通过ISO 98?
答案 0 :(得分:3)
class Example{
const int LEVEL_INF;
};
不是每个类,而是每个实例。你需要把它变成静态的:
class Example{
static const int LEVEL_INF;
};
静态const积分类型的优点是你可以在类中初始化它们,不一定在外面:
class Example{
static const int LEVEL_INF = 1337;
};
另外,如果您想要公开访问,请添加public
。
编辑:根据@ ildjarn的建议,在课外进行初始化:
//header.h
class Example{
static const int LEVEL_INF;
};
//implementation.cpp
const int Example::LEVEL_INF = 1337;
答案 1 :(得分:2)
为了完整起见,除了static const
之外,还有另一种方法:
class Example
{
// Anonymous enum
enum { LEVEL_INF = 0; };
};
答案 2 :(得分:1)
只要它是一个整数常量,就像int
一样,你可以像在Java中那样做
class Example {
public:
static const int LEVEL_INF = 0;
};