基本上,我想在类本身中声明一个类的常量:
class MyClass {
int itsValue;
public:
MyClass( int anInt) : itsValue( anInt) {}
static const MyClass CLASSCONST;
};
所以我可以像这样访问它;
MyClass myVar = MyClass::CLASSCONST;
但我无法找到初始化MyClass :: CLASSCONST的方法。它应该在MyClass声明中初始化,但在那时构造函数是未知的。任何人都知道这个技巧或者在c ++中是不可能的。
答案 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 ;
}