2013-04-22 76 views
0

在Surface.h我:如何從另一個.cpp文件訪問全局結構?

struct Surface{ 

    bool isAllowedOnTile[TILETYPE_COUNT]; 

    float moveBecomes; // When this is 0, it is ignored 
    float moveChange; // Is ignored if moveBecomes is non-zero 
    float affChange[ELEMENT_COUNT]; 

    ID2D1BitmapBrush* pBrush; 
}; 

在某個時候,我需要初始化倍數表面是這樣的:

Surface surface[SURFACEBMP_COUNT]; 

surface[0].moveBecomes = 123; 
surface[0].moveChange = 0; 
surface[0].affChange[0]= 2.0f; 

... 

然後我想有機會浮出水面[0],表面[ 1],表面[2] ...從我的程序中的任何地方。我怎麼做?

+0

顯而易見的解決方案是使表面的全局變量(全局數組要準確)。如果沒有看到您的代碼或理解您的程序設計,這是否是一個好的解決方案很難說。 – john 2013-04-22 11:41:21

回答

2

使用extern,並使surface全局。

file.h

#ifndef FILE_H 
#define FILE_H 

... 

extern Surface surface[SURFACEBMP_COUNT]; 

#endif 

它的頭文件,它應該包括它在你需要surface

file.cpp

#include "file.h" 

Surface surface[SURFACEBMP_COUNT]; 
+0

然後,如果我的程序(在任何.cpp文件的任何函數內)的任何位置寫入「surface [0] .moveBecomes = 123」,則無論從哪裏訪問它,surface [0] .moveBecomes都將爲123 ? – 2013-04-22 11:44:21

+0

是的,只需包含'file.h'並簡單地使用它。 – deepmax 2013-04-22 11:45:44

2

最簡單的辦法 - 在頭文件使用

extern Surface surface[SURFACEBMP_COUNT]; 

然後聲明和.cpp文件初始化它,只要你想使用。