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

时间:2011-04-20 08:05:00

标签: c++ static-methods static-members

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尚未初始化。有没有办法在c.cpp之前编译d.cpp?

2 个答案:

答案 0 :(得分:2)

此恕我直言的最佳参考:

What's the "static initialization order fiasco"?

答案 1 :(得分:0)

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

相关问题