繁体   English   中英

静态成员变量初始化

[英]Static member variable initialization

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

假设Alphabet具有参数化的构造函数,则可以在单个翻译单元(在Text.cpp文件中)中以这种方式进行操作,

Alphabet Text::alphabet[] = { ("./Alphabet/", "Arial", ".xml"), 
                              ("./Alphabet/", "Menlo", ".xml"),
                              ("./Alphabet/", "Times", ".xml") };

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

选项2:在“文本”类中添加新的静态方法(函数)以初始化静态成员。 由于您的静态数据成员在private部分中。 在公共部分声明该方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM