它自己类的c++类常量

c++ class constant of its own class

本文关键字:常量 c++ 它自己      更新时间:2023-10-16

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

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

所以我可以这样访问它;

MyClass myVar = MyClass::CLASSCONST;

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

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

下面是一个在类外定义的工作示例。类声明有一个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 ;
}