静态成员变量初始化
如下所示。我如何使用alphabet's
自己的成员函数为我的static member
变量初始化alphabet
变量?我需要从“Text.cpp”实现文件中进行初始化。静态成员变量初始化
Text.h
class Text {
private:
struct Font {
enum Enum {
Arial,
Menlo,
Times
};
};
static Alphabet alphabet[3]; // library of letters
}; // class
我需要如下所示的东西,只是完成任务的正确方法。我还需要在运行期间初始化alphabet
一次,因此我已将alphabet
设为静态。谢谢。 ^^
Text.cpp
Alphabet Text::alphabet[Text::Font::Arial].Load("./Alphabet/", "Arial", ".xml"));
Alphabet Text::alphabet[Text::Font::Menlo].Load("./Alphabet/", "Menlo", ".xml"));
Alphabet Text::alphabet[Text::Font::Times].Load("./Alphabet/", "Times", ".xml"));
假设字母有一个参数化的构造函数,你可以做这样的一个转换单元(在Text.cpp文件),
Alphabet Text::alphabet[] = { ("./Alphabet/", "Arial", ".xml"),
("./Alphabet/", "Menlo", ".xml"),
("./Alphabet/", "Times", ".xml") };
准确地说 - 为了避免重复,构造函数可以在内部调用'Load'。 (在你的答案中有一些额外的''''可能想要编辑它们)。 +1 – 2013-05-13 08:17:59
@Luchian,谢谢编辑“)”出来。 – Arun 2013-05-13 08:19:08
@Arun谢谢。我会超载我的'字母'构造函数来完成这个工作。 ^^ – 2013-05-13 09:16:27
选项1:所有的静态变量声明在类中应该重新定义.cpp(实现文件,在你的情况下Text.cpp),你应该初始化定义中的变量。
选项2:在类“Text”中添加一个新的静态方法(函数)以初始化静态成员。 由于您的静态数据成员在私人部分。在公共部分声明该方法。
请按照此链接, http://stackoverflow.com/questions/5803953/static-constructor-in-c – neo 2013-05-13 08:14:28
@neo谢谢。知道可以仿真静态构造函数是很好的。 ^^ – 2013-05-13 09:27:54