我已经读了很多有关C++静态类变量的初始化,而谷歌编码标准只说明了创建普通旧数据的静态(即基本指针&),我在网上和书中看到了很多例子作者违反了该指南。如何避免在C++中使用非原始静态类变量的问题?
我也读过,只要你保持静态在一个编译单元,你不太可能遇到未定义的初始化问题。
好...话说回来......我想在我是否会遇到一些问题下来的代码看起来像路上的一些专家的意见...
//header file snippet
struct TheStruct {
string theString;
string theString2;
float theFloat;
};
class TheClass {
public:
static const TheStruct Dude;
static const TheStruct Blah;
static const TheStruct TheStructArray[];
TheClass();
virtual ~TheClass();
TheStruct getCurrent();
private:
TheStruct current;
}
//impl file snippet
const TheStruct TheClass::Dude = { "Dude", "Dude", 0 };
const TheStruct TheClass::Blah = { "Blah", "Blah", 0 };
const TheStruct TheClass::TheStructArray[] = {TheClass::Dude, TheClass::Blah};
TheClass::TheClass() : current(TheClass::Dude) {}
TheClass::~TheClass() {}
TheStruct TheClass::getCurrent() {return current;}
我觉得getCurrent()
方法没问题。静态常量Dude
和Blah
包装在静态数组TheStructArray
中,道路上的东西将使用。但是,我猜如果它被其他类使用,我仍然会遇到数组的问题。例如,GUI可以使用该阵列来呈现有效选项以供选择。
我来自一个Java的背景,所以我经常用private static final
定义一些有效的“状态” ......
谢谢!
不要将Google编码标准视为良好编程实践的指南。 – 2011-02-08 15:17:49