2017-03-21 41 views
-4

我試圖在一個函數中使用矢量的內容,它有它自己的.cpp和頭文件。將Vector的內容傳遞給一個函數

頭文件中有聲明 void drawIsland(int);

和.cpp文件有定義 void drawIsland(vector<int>&Island) {//code here...};

但是試圖調用主.cpp文件中的函數給我的錯誤「沒有合適的從「std :: vector>」到「int」的轉換函數存在「,並且代碼不會運行。

我試圖通過已經爲0。

如何讓向量進入功能的任何建議與整數的每一個用戶定義的號碼全部初始化向量?

+1

爲什麼你聲明函數當在cpp文件中使用'vector'時,在頭文件中使用'int'? – NathanOliver

+0

如果你不明白爲什麼你不能定義一個'drawIsLand(vector &)',聲明一個'drawIsland(int)',並期望一切正常,那麼你需要花更多的時間來閱讀你的C++書籍。 –

+0

這是每本C++書都有的東西,不需要問社區,你會浪費你和其他人的時間(更不用說你會因爲這樣的問題而被低估) – StahlRat

回答

3

使聲明(.h)符合定義(.cpp)!

呼叫站點只看到void drawIsland(int),那麼它怎麼會認爲可以通過vector

所以你的頭應該是這樣的:

#ifndef INCLUDED_DRAW_ISLAND 
#define INCLUDED_DRAW_ISLAND 

#include <vector> 

void drawIsland(std::vector<int> &island); 

#endif 

你的CPP應該是這樣的:

#include <draw_island.h> 

void drawIsland(std::vector<int> &island) 
{ 
    // do stuff... 
} 

而主要應該是這樣的:

#include <draw_island.h> 
#include <vector> // not strictly necessary 

int main() 
{ 
    std::vector<int> island{1,2,3,4,5}; 
    drawIsland(island); 
} 
+0

在聲明匹配定義之後,我現在得到錯誤說'vector':未聲明的標識符,並在頭文件中鍵入'int'意外。 – aftershock995

+0

@ aftershock995不知道你錯過了什麼,因爲你沒有提供[mcve],但我添加了文件應該如何顯示的例子。 – BoBTFish

+0

道歉我缺乏例子,但你的建議設法幫助,我得到了我的功能載體。非常感謝! – aftershock995

相關問題