如何方便地初始化一个类的静态成员?

Posted

技术标签:

【中文标题】如何方便地初始化一个类的静态成员?【英文标题】:How to initialize a static member of a class conveniently? 【发布时间】:2020-08-21 07:42:19 【问题描述】:

我有这门课

class A

public:

static image* Table;

所以我无法在课堂上初始化A::Table,也无法在我的库中的文件中进行初始化。有没有办法在不询问用户的情况下启动它“请在开始工作之前写“A::Table=nullptr””? 那么A::Table在私教课怎么办呢?

看到了类似的话题,没有找到答案

【问题讨论】:

这能回答你的问题吗? C++ static member variable and its initialization 为什么你不能在你的图书馆资源中做到这一点? image* A::Table = nullptr; 有什么问题? 你能说一下“在你的图书馆里做”是什么意思吗? 你能解释一下为什么我需要在初始化时写一个类型,当我在课堂上写它的时候?很奇怪 【参考方案1】:

试试这个

class A

private:
    static inline image* Table = nullptr;
;

【讨论】:

不工作,我在VS2019中尝试过,所以可能是它的VS 我忘了你可能使用的是旧的 C++ 版本。此代码仅适用于 C++17 及更高版本。你可以去设置和更改C++的版本(不是VS版本)。 通常情况下,您应该拆分为 2 个文件,.hpp 用于定义,.cpp 用于实现

以上是关于如何方便地初始化一个类的静态成员?的主要内容,如果未能解决你的问题,请参考以下文章

如何将静态 const 变量保留为类的成员

静态成员初始化取决于另一个类的成员的初始化

C++中类的静态成员初始化

静态构造函数, 静态成员初始化/调用顺序

类的静态数据成员初始化问题

Java类的各种成员初始化顺序如:父子类继承时的静态代码块,普通代码块,静态方法,构造方法,等先后顺