2012-09-15 98 views
-1

我想弄清楚如何調用一個返回棧類型變量的函數。這是一個代碼非常簡單的塊我做了,看看這個方法有效,但是事實並非如此:返回棧變量

#include <iostream> 
#include <string> 
#include <stdio.h> 
#include <stdlib.h> 
#include <stack> 

stack<int> ReturnStack(stack<int>); 

int main() 
{ 
    stack<int> z; 
    stack<int> x; 
    z.push(1); 
    z.push(2); 
    z.push(3); 
    x = ReturnStack(z); 
} 

stack<int> ReturnStack(stack<int> z) 
{ 
    return z; 
} 

它拋出了一堆錯誤,並拒絕工作。我在這裏做錯了什麼?我怎樣才能成功地調用返回棧的東西?謝謝。

+0

你知道什麼是按價值傳遞價值嗎?去看看它。 – Marcin

+3

你可以發佈這個「一堆錯誤」,所以我們不必自己編譯它? (他們抱怨沒有找到'stack'?寫'std :: stack'而不是'stack')。 –

+1

爲什麼包含stdio.h和stdlib.h?爲什麼main沒有返回語句(即使編譯器自動生成一個)? –

回答

3

stack位於std命名空間中。如果(作爲快速的樂隊幫助,而不是真正的修復)在ReturnStack的聲明之前放置using std::stack;,它會毫無問題地進行編譯。

+0

就是這樣。非常感謝。 –

+0

@SantoshKantharaj記得接受最有幫助的答案。 – oldrinb

+0

@oldrinb:在我寫這篇文章的時候我沒有看到它,但是R.Madeho Fernandes在我發表這篇文章之前一分鐘左右就在評論中指出了正確的答案,所以他應該真正得到正確答案的功勞。 –