在 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;
此外,正如 Borgleader 所指出的,您应该考虑使用 member initializer list 来改进您的代码。
我想要一个 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;
此外,正如 Borgleader 所指出的,您应该考虑使用 member initializer list 来改进您的代码。