c++ - 静态成员变量初始化

标签 c++

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

关于c++ - 静态成员变量初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16517427/

相关文章:

c++ - 如何使用指针为矩阵编写单循环

c++ - 在 C++11 中不允许重新定义 lambda,为什么?

c++ - 使用 Boost 属性树解析 SVG (XML)

java - C++ 等价于 java 的 instanceof

c++ - 如何在 C++ 中处理异步套接字接收?

c++ - 如何强制,值(value)成为左值引用?

c++ - 在 C++ 控制台应用程序中使用 Unicode 字体

c++ - 尝试内联函数时 Visual C++ 中的链接错误

c++ - 我似乎对 C++ 中的 `static` 有一些误解

c++ - 用于删除调试信息的 MSVC 命令行选项