在 C++ 中创建静态初始化 class

Create a static initialise class in c++

我想要一个 class 用于一次性初始化,如下所示:

class Initialise
{
public:
    Initialise()
    {
        m_name = "Jimmy";
    }
    ~Initialise(){}

private:
    std::string m_name;
};

class SomeClass
{
    static Initialise staticStuff; // constructor runs once, single instance
};

int main()
{
    SomeClass testl;

    return 0;
}

当我 运行 以上时,我发现 'Initialise' class 的构造函数永远不会在调试器中被命中。这是为什么?

您没有定义 staticStuff,您只是声明了它。

您必须像这样在 class 之外声明它:

Initialise  SomeClass::staticStuff;

Here is a live example.


此外,正如 Borgleader 所指出的,您应该考虑使用 member initializer list 来改进您的代码。