许多类之间的静态变量初始化顺序

发布于 2024-11-02 13:52:43 字数 345 浏览 2 评论 0原文

c.h   
class C{  
    static string s;  
}

c.cpp  
string C::s=D::staticMethod();

d.h  
class D{  
static string s;  
static string staticMethod();  
}

d.cpp  
string D::s("some string");  
string D::staticMethod(){  
    return s;  (***)  
}

这是行不通的,它会停止在 (*),因为 D::s 尚未初始化。有没有办法让 d.cpp 在 c.cpp 之前编译?

c.h   
class C{  
    static string s;  
}

c.cpp  
string C::s=D::staticMethod();

d.h  
class D{  
static string s;  
static string staticMethod();  
}

d.cpp  
string D::s("some string");  
string D::staticMethod(){  
    return s;  (***)  
}

this won't work, it stops at (*) because D::s has not been initialized.Is there any way to get d.cpp compiled before c.cpp?

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

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

发布评论

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

评论(2

痞味浪人 2024-11-09 13:52:43

简而言之,不。如果您确实需要这种行为,请查找单例模式。但也要仔细考虑您的应用程序中是否需要这种耦合。

In short, no. If you really need this sort of behaviour, look up the Singleton pattern. But also think carefully whether you need that sort of coupling in your application.

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