2014-02-21 67 views
0

另一個全局變量我有這些文件(簡本)在其他文件

class A 
{ 

public: 
    A(int){} 

int operator [](int a){return a;} 
}; 

A a(2); 

的main.cpp

#include<a.h> 

class B 
{ 
public: 
    B(int){} 
}; 

B b(a[2]); 

int main() 
{ 
    //use b here... 
} 

Q使用類的全局實例:我可以使用上面的代碼?這是對的嗎 ?!

回答

0

上面(幾乎)編譯的代碼,但它可能不會達到你所期望的。幾個問題。 。 。

  1. #include<a.h>大概應該是#include "a.h"如果A.H位於同一目錄中的main.cpp。

  2. B b(a[2])可能會創建類A的新實例,而不是使用您在a.h中定義的實例。在使用a之前,請添加extern A a;以告知編譯器您想使用在另一個文件中聲明的a

最後,根據您的應用程序有時全局變量可能會被忽視。如果合適,請考慮使用封裝而不是全局變量。如果你只需要從B訪問像

Class B { 

public: 
    B(int i){} 

private: 
    A a(); // Or extern A a; 
}; 

東西會工作。