2012-09-15 47 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在我发表这篇文章之前一分钟左右就在评论中指出了正确的答案,所以他应该真正得到正确答案的功劳。 –