有没有办法延迟初始化类的静态子对象?

发布于 2025-01-07 13:38:37 字数 33 浏览 0 评论 0原文

有没有办法在 main() 启动后初始化静态类成员?

Is there a way of initializing a static class member after main() has started ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

独孤求败 2025-01-14 13:38:37

一种方法是将静态成员数据替换为静态成员函数。

假设您有这个类:

class A
{
   static B static_b; //static member data
};

//.cpp
B A::static_b; //definition (required)

那么您可以将您的类定义为:

class A
{
   static B static_b()  //static member function!
   {
       static B b;
       return b;
   }
};

请注意,它不是线程安全的,但您也可以使其成为线程安全的。

One way to do that is to replace the static member data which static member function.

Say you've this class:

class A
{
   static B static_b; //static member data
};

//.cpp
B A::static_b; //definition (required)

So instead of that you can define your class as:

class A
{
   static B static_b()  //static member function!
   {
       static B b;
       return b;
   }
};

Note that it is not thread-safe, but you can make it thread-safe as well.

拥醉 2025-01-14 13:38:37

您可以使用该对象的指针:

class SomeClass{
public:
    static SomeOtherClass* p;
};

SomeOtherClass* SomeClass::p;    

void main(){
    SomeClass::p = new SomeOtherClass();
}

You can use a pointer for this object:

class SomeClass{
public:
    static SomeOtherClass* p;
};

SomeOtherClass* SomeClass::p;    

void main(){
    SomeClass::p = new SomeOtherClass();
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文