静态成员变量初始化
Static member variable initialization
如下所示。我如何初始化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"));
假设Alphabet有一个参数化构造函数,您可以在单个翻译单元(在Text.cpp文件中)中这样做,
Alphabet Text::alphabet[] = { ("./Alphabet/", "Arial", ".xml"),
("./Alphabet/", "Menlo", ".xml"),
("./Alphabet/", "Times", ".xml") };
选项1:类中声明的所有静态变量都应该在.cpp(实现文件,在您的例子中是Text.cpp)中重新定义,您应该在定义中初始化变量。
选项2:在"Text"类中添加一个新的静态方法(函数)来初始化静态成员。因为你的静态数据成员在私有部分。
相关文章:
- 初始值设定项列表是否只接受使用相同类型的值初始化变量?
- 在 C++ 中访问 lambda 捕获初始化变量
- 为什么C++不支持对未初始化变量进行智能分析?
- 使用 clang++ 和 g++ 在C++中初始化变量
- C++使用 lambda 初始化变量
- 如何在初始化列表中的构造函数之后初始化变量/对象?
- C++ - 输出与初始化变量不同?
- C++/Win32 构造函数不使用从对话框获取的字符串初始化变量
- 在C++中,为什么int可以使用new运算符初始化变量,而double不能
- 具有静态存储持续时间的常量初始化变量的初始化顺序
- C++ 中的初始化变量
- C++中未初始化变量的值
- 如何在需要提及需要循环声明的其他类的类中初始化变量?
- 我想知道在构造函数中初始化变量时的生命周期
- 读取恰好具有良好值的未初始化变量
- 如何在 getter 的父类中初始化变量的情况下访问子类中的变量
- 为什么在 c++ 中有多种初始化变量的方法
- 没有参数的默认构造函数是否总是初始化变量?
- 是否可以使用 lambda 初始化变量(删除复制 ctor 时)
- 使用构造函数跳闸UB的新放置后使用初始化变量