2015-02-06 97 views
-2

我想实现一个嵌套的栈结构,基本上是一个标准的栈封装在一个自定义栈内。我正在上传代码。嵌套栈实现

struct Advstack 
{ 
    stack* mainStack=NULL; 
}; 

void pushNew(struct Advstack* new_stack, int val) 
{ 
    new_stack->mainStack->push(val); 
} 

int main() 
{ 
    struct Advstack* new_stack; 
    pushNew(new_stack, 2); 
}

此代码是给我segmentation fault这我不能够做出来的为什么会这么给。
PS:我已经包含了所需的头文件,即bits/stdC++stack

+0

C++甚至不会编译代码的行'堆栈 * mainStack = NULL;'尤其如此。 – 2015-02-06 22:33:17

+3

为什么要使用指针?只要声明一个非指针成员'stack minStack',你的问题就解决了。 – PaulMcKenzie 2015-02-06 22:45:37

回答

1

new_stack未初始化。在使用之前,您需要创建一个Advstack的实例。您也永远不会将其成员mainStack分配给实际堆栈。这应该可以解决您的段错误:

struct Advstack* new_stack = new Advstack; 
    new_stack->mainStack = new stack<int>(); 
    pushNew(new_stack, 2); 
    delete new_stack->mainStack; 
    delete new_stack; 
+2

为什么使用指针'struct Advstack *',并且应用'new()'/'delete'? – 2015-02-06 22:37:28