与其他静态const成员初始化静态const成员
问题描述:
我有2个静态const成员,我希望它们是相同的类,所以我使用其他类的其他静态const成员,我想初始化这些成员的值普通的阶级。 它看起来像这样: 啊:与其他静态const成员初始化静态const成员
class A {
public:
static const std::string a;
};
A.cpp:
const std::string A::a = "hello";
了Bh:
class B {
public:
static const std::string b;
};
B.cpp:
const std::string B::b = A::a;
章:
class C {
public:
static const std::string c;
};
C.cpp:
const std::string C::c = A::a;
问题是我不能初始化静态常量成员与其他静态部件,由于静态成员在程序运行的开始时被初始化,和A的值:: a在尝试初始化B :: b和C :: c时不可用,因此出现分段错误。
我能做些什么来解决这个设计问题?
答
我建议使用一个单独的函数来获取一个字符串向执行初始化,避免初始化顺序的悲剧:
const std::string initialize() {
static const std::string initializer = "meow";
return initializer;
}
那么你可以像下面这样做初始化:
class A {
public:
static const std::string a;
};
const std::string A::a = initialize();