2012-05-23 73 views
1

我正在爲作業寫一個小遊戲,它需要使用地圖,我已經成功地將地圖放入2d數組中,但現在正在進一步工作中發現我需要在另一個函數中訪問數組Map [] []。我試圖讓它工作,但失敗了。我用g ++得到的錯誤是「錯誤:'地圖'不是一個類型」任何幫助將不勝感激。'...'不是一個類型的C++編譯錯誤

我已經搜索,但無論我使用搜索引擎可怕,或我找不到具體到這個錯誤的任何東西。

const int MapSZ = 10; //In Global 
int Map[MapSZ][MapSZ]; // Also Global 

void GetMap(ifstream&, int); //Getting the map (Proto) 

GetMap(fin, Map[MapSZ][MapSZ]); //In the main function. 

void GetMap(ifstream& fin, Map[MapSZ][MapSZ]) //Inserting the map into an array 

回答

1

如果Map[MapSZ][MapSZ]被定義爲您的註釋狀態(即在main.cpp中定義但在主函數之外定義)爲全局,則不需要將其作爲參數傳遞給GetMap。你可以簡單地做一些事情,比如

void GetMap(ifstream& fin); //proto 

int main(int argc, const char * argv[]) { 
    GetMap(fin); 
} 

void GetMap(ifstream& fin) { 
    //some code that uses Map[MapSZ][MapSZ] 
} 
+0

謝謝,這讓它排序。現在感覺很愚蠢......反正乾杯! – Joey

+0

不用擔心,發生在我們身上。很高興我能幫上忙! – Moritz

3
void GetMap(ifstream& fin, Map[MapSZ][MapSZ]) 

應該是:

void GetMap(ifstream& fin, int Map[MapSZ][MapSZ]) 
          ^^^^ 

通知書的,Map名數組,但你沒有提到它的

+2

'GetMap'將與早期的GetMap原型不兼容。我不希望超載在這裏是可取的。 –

+0

謝謝,我推出'int',但現在我得到了一個相當奇怪的編譯錯誤「/tmp/cc5xDEOL.o:在函數'main'中: P1P2.cpp :(。text + 0x65):undefined指向' GetMap(std :: basic_ifstream >&,int)' collect2:ld返回1退出狀態「 – Joey

+0

@Joey函數調用傳遞一個int,而不是整個'Map'。正確的聲明是'void GetMap(ifstream&fin,int MapElement)',因爲函數不知道整個地圖。最好從函數定義中複製原型,而不是從調用站點複製原型。編輯:等等,你已經有了一個正確的原型。什麼是「插入映射到數組 」行應該是? – Potatoswatter

相關問題