2017-08-12 44 views
1

靜態對象我有一個A類在 「啊」:C++定義內

#include "b.h" 

class A { 
public: 
    static B b; 
} 

我想在另一個函數

初始化b在 「main.cpp中」:

#include "a.h" 
#include "b.h" 

int main() { 
    .... 
    B A::b = B(arg1, arg2); 

但語法檢查器給我錯誤:「成員A :: b不能在當前範圍內定義。」這樣做的正確方法是什麼?

+0

順便說一下,這不是一個很好的代碼風格。你應該使用盡可能少的靜態構造函數。 – merito

+0

這是爲什麼? @merito –

+0

因爲C++沒有定義構造靜態對象的順序。你應該小心使用它。 – merito

回答

4

您可以設置值main()但定義必須是在全球範圍內:

#include "a.h" 
#include "b.h" 

B A::b; // <<<<<< 

int main() { 
    .... 
    A::b = B(arg1, arg2); 
// ^^^^