порядок инициализации статических переменных между многими классами - PullRequest
1 голос
/ 20 апреля 2011
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?

Ответы [ 2 ]

2 голосов
/ 20 апреля 2011
0 голосов
/ 20 апреля 2011

Короче, нет.Если вам действительно нужно такое поведение, посмотрите шаблон Singleton.Но также подумайте, нужна ли вам такая связь в вашем приложении.

...