0

如下所示。我将如何为我的变量初始化alphabet使用alphabet's自己的成员函数static member?我需要从“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"));
4

2 回答 2

3

假设 Alphabet 有一个参数化的构造函数,您可以在单个翻译单元(在 Text.cpp 文件中)中这样做,

Alphabet Text::alphabet[] = { ("./Alphabet/", "Arial", ".xml"), 
                              ("./Alphabet/", "Menlo", ".xml"),
                              ("./Alphabet/", "Times", ".xml") };
于 2013-05-13T08:16:56.177 回答
1

选项1:类中声明的所有静态变量都应在.cpp(实现文件,在您的情况下为Text.cpp)中重新定义,您应在定义中初始化变量。

选项 2:在类“Text”中添加一个新的静态方法(函数)来初始化静态成员。由于您的静态数据成员位于私有部分。在公共部分声明方法。

于 2013-05-13T08:22:39.120 回答