c ++类本身的常量

时间:2015-02-28 20:23:11

标签: c++ class constants

基本上,我想在类本身中声明一个类的常量:

class MyClass {
    int itsValue;
    public:
        MyClass( int anInt) : itsValue( anInt) {}
        static const MyClass CLASSCONST;
};

所以我可以像这样访问它;

MyClass myVar = MyClass::CLASSCONST;

但我无法找到初始化MyClass :: CLASSCONST的方法。它应该在MyClass声明中初始化,但在那时构造函数是未知的。任何人都知道这个技巧或者在c ++中是不可能的。

2 个答案:

答案 0 :(得分:2)

class MyClass {
    int itsValue;
    public:
        MyClass( int anInt) : itsValue( anInt) {}
        static const MyClass CLASSCONST;
};

const MyClass MyClass::CLASSCONST(42);

答案 1 :(得分:1)

Here是一个在类外定义的工作示例。 类声明有一个const static成员,它在类外部初始化,因为它是一个静态成员,类型为非整数。因此,无法在类内部进行初始化。

#include <iostream>

class test
{
    int member ;
public:
    test(int m) : member{m} {}

    const static test ob ;

    friend std::ostream& operator<<(std::ostream& o, const test& t)
    {
        o << t.member ;
        return o;
    }
};

const test test::ob{2};

int main()
{
    std::cout << test::ob ;
}