2012-11-25 45 views
0

我在將文件鏈接在一起時遇到了一些麻煩。還有我使用的類:A類C++中的更多類和外部變量

頭文件啊 B類的

class A 
{ 
public: 
    B someVariable; //there is class B used!! 
    int number; 
}; 

頭文件了Bh

class B 
{ 
public: 
    void someMethod(); 
}; 

實現B中

B::someMethod() 
{ 
    cout << "Value is:" << globalInstanceOfA.number << "\n"; 
} 

然後在另一個文件中,我需要聲明一個全局變量globalInstanceOfA,我將在整個程序中使用...

但我解決不了什麼地方放置包括extern和等。我試過類似的東西:

#include "A.h" 
#include "B.h" 

extern A globalInstanceOfA; 

有人能幫助我嗎?

+0

您應該在「A.h」之前放置「B.h」。 – Yuan

+0

你在這裏得到了一個設計錯誤,而且B應該永遠不會相互認識...... – 2012-11-25 13:23:32

回答

1

extern A globalInstanceOfA; 

進去一個頭文件必須包括以使用變量globalInstanceOfA;這提供了全局變量的聲明

A globalInstanceOfA; 

進入你的任何cpp文件中提供的全局變量定義。程序中的所有cpp文件中必須有一個定義。

+0

嗯。 'extern'不需要進入標題。在cpp中沒有任何問題。然而,使用它有一些適度的錯誤。 – David

+0

@Dave'extern'在cpp文件中沒有什麼問題,但通常是沒用的:需要'extern'來共享多個CPP之間的全局,這就是爲什麼它通常在一個頭文件中。不過,我確實認爲,一般情況下,「使用全局變量有一些錯誤」。 – dasblinkenlight

+0

迂腐:一個不需要'extern'就可以在多個cpp中共享一個全局,他們需要它共享一個或多個cpp中的全局......這就是爲什麼它在特定的cpp中使用完全骯髒/有用,有時。 – David