如何在cpp类中具有静态常量? 我从一个沉重的java背景中进入C++。

如何在cpp类中具有静态常量? 我从一个沉重的java背景中进入C++。,c++,class,static,C++,Class,Static,如何将常量与类关联? 如果它是Java,它会是类似于 公共类示例{ 公共静态最终int常量=0; } 公共静态void main(字符串[]args){ System.out.println(例如常数); } 结果就是0 < C++ >我已经计算过了: class Example{ const int LEVEL_INF; } 这是正确的吗? 即使是ISO 98 class Example{ const int LEVEL_INF; }; 不是每个类,而是每个实例。您需要将

如何将常量与类关联? 如果它是Java,它会是类似于

公共类示例{
公共静态最终int常量=0;
}
公共静态void main(字符串[]args){
System.out.println(例如常数);
}
结果就是0

< C++ >我已经计算过了:

class Example{
    const int LEVEL_INF;
}
这是正确的吗?
即使是ISO 98

class Example{
    const int LEVEL_INF;
};
不是每个类,而是每个实例。您需要将其设置为静态:

class Example{
    static const int LEVEL_INF;
};
静态常量整数类型的优点是,您可以在类内部初始化它们,而不必在类外部:

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;
不是每个类,而是每个实例。您需要将其设置为静态:

class Example{
    static const int LEVEL_INF;
};
静态常量整数类型的优点是,您可以在类内部初始化它们,而不必在类外部:

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;

只要它是一个整型常量,比如
int
,您就可以像在Java中一样执行它

class Example {
public:
    static const int LEVEL_INF = 0;
};

只要它是一个整型常量,比如
int
,您就可以像在Java中一样执行它

class Example {
public:
    static const int LEVEL_INF = 0;
};

为了完整性起见,这里有另一种方法,而不是静态常量:

class Example
{
    // Anonymous enum
    enum { LEVEL_INF = 0; };
};

为了完整性起见,这里有另一种方法,而不是静态常量:

class Example
{
    // Anonymous enum
    enum { LEVEL_INF = 0; };
};

只有在他需要ODR使用
LEVEL_INF
时,这才是好的,在这一点上,它需要一个类外定义,因此我认为值得在这里演示如何做到这一点。iso 98标准对此没有影响?@kotoko:C++98标准与什么相反?这是有效的C++98、C++03和C++11。只有在他需要ODR使用
LEVEL\u INF
时,这才是好的,在这一点上,它需要一个类外定义,所以我认为值得在这里演示如何做到这一点。iso 98标准对此没有任何影响?@kotoko:C++98标准与什么相反?这是有效的C++98、C++03和C++11。