c++用栈弹出指针,ERROR C2109

问题描述

c++用栈弹出指针,ERROR C2109

头文件定义模版
#ifndef STACK_H_
#define STACK_H_

template
class Stack
{
private:
int ss;
int top;
T * sp;
public:
Stack(int n);
~Stack();
void push(const T &s);
T & pop();
};

template
Stack::Stack(int n)
{
ss = n;
top = 0;
sp = new T[ss];
}

template
Stack::~Stack()
{
delete[] sp;
}

template
void Stack::push(const T &s)
{
sp[top++] = s;
}

template
T & Stack::pop()
{
return ss[--top];
}
#endif

main 函数
#include
#include "stack.h"
using std::cout;
using std::endl;

int main()
{
const int num = 10;
char * p[num] = { "NO.1 Alex", "NO.2 MIKE", "NO.3 Nike", "NO.4 YIHOO",
"NO.5 Yanjing", "NO.6 Andy", "NO.7 Hello", "NO.8 Wow", "NO.9 Pop", "NO.10 ddd" };
Stack wo(num);
int i;
for (i = 0; i < num; i++)
{
wo.push(p[i]);
}
cout << "弹出的栈:n";
for (i = 0; i < num; i++)
cout << wo.pop() << endl;
system("pause");
return 0;
}

解决方案

栈只是对指针数组里的指针进行压入或弹出操作。问题显然出在Pop函数里
解决方法,现在设计一个 char * out[num[ 指针数组,它的作用是用来存放弹出的指针,再利用一个for循环打印出来
修改后的pop()
template
void Stack::pop( T &s)
{
s = sp[--top];
}
定义的char * out[num]

char * out[num];
cout << "弹出的栈:n";
for (i = 0; i < num; i++)
{
wo.pop(out[i]);
}
for (i = 0; i < num; i++)
cout << out[i] << endl;

    结果如图![图片说明](http://img.ask.csdn.net/upload/201603/27/1459048472_138537.png)
时间: 2024-09-17 04:24:06

c++用栈弹出指针,ERROR C2109的相关文章

弹出“Runtime Error!”出现iexplorer.exeR6025

在运行视频软件如:pps.pptv等或者打开部分网页时跳出以下图片: 1 出现iexplorer.exeR6025这个错误的现象 1:pps.pptv等软件打不开 360安全卫士里面的有些功能不能用 设备管理器也打不开 有些网页打开也会出现这个提示 2 解决这个问题的方法 在运行里面输入"cmd",然后输入"cd %windir%system32"注意空格跟符合,最好用复制进去,按下Enter,然后再输入"Regsvr32 Msxml3.dll4"

打开电脑中的PS弹出Configuration error错误提示窗口如何解决

  具体方法如下: 1.在开始菜单中找到PS,全名是Adobe Photoshop; 2.右击PS,选择"以管理员身份运行"; 3.然后就可以顺利打开PS.

jquery easyui 弹出消息框 (转载)

jQuery EasyUI API 中文文档 - 消息框(Messager) http://www.cnblogs.com/hantianwei/archive/2012/03/19/2407113.html   <html> <head> <!-- 导入easyui插件的js和css样式; --> <link rel="stylesheet" type="text/css" href="/EasyuiDemo/s

剑指offer:栈的压入弹出序列

剑指offer上的第22题,九度OJ上AC. 题目描述: 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列. 输入: 每个测试案例包括3行: 第一行为1个整数n(1<=n<=100000),表示序列的长度. 第二行包含n个整数,表示栈的压入顺序. 第三行包含n个整数,表示栈的弹出顺序

无法解决error C2109: 下标要求数组或指针类型

问题描述 无法解决error C2109: 下标要求数组或指针类型 最近在学习数据结构的图--以上是有问题的代码,还没有写完.但是这一段: 和这一段: 各位大神应该是看到了i或者j下面划得红线吧,问题就是出在这里.以下po出完整的代码段,但是还是没有写完. #include<iostream> using namespace std; #define MVNum 100 #define MaxInt 0 #define Int 1 /*int VerTexType; int ArcType;*

Win8.1打开便笺弹出stikynot.exe-Application Error错误怎么办

win8.1系统中内置有便签应用,我们可以利用它来记录事情和工作内容.不过有用户反馈称打开便签时弹出了stikynot.exe-Application Error的错误提示,导致无法打开便签,这该怎么办呢? 方法一:修复系统文件 按下Win+X+A组合键,打开命令提示符,输入: sfc/scannow DISM /Online /Cleanup-image /RestoreHealth 方法二: 安装其他输入法,不要把微软拼音设置为默认,最好安装英文语言.

windows7玩英雄联盟弹出error report窗口怎么解决

  windows7玩英雄联盟弹出error report窗口怎么解决 一.使用第三方工具导致; 1.游戏崩溃的时候我们查看是否使用了盒子之类的工具,打开的英雄联盟.如果使用了盒子的话,打开进入主界面勾选纯净模式,将盒子的功能项都去掉,然后从新打开游戏.如果测试不行,那么建议卸载它; 2.卸载完成,此时我们还应当删除对应的注册表项目,才能保证彻底卸载完成,打开电脑左下角开始菜单,找到运行选项打开; 3.然后在弹出的对话框里输入[regedit]命令点击打开注册表编辑器; 4.进入注册表编辑器定位

电脑开机弹出错误提示:Autolt Error的解决办法

  开机出错,并弹出出错提示 Autolt Error ,一般为无效的随机启动项的缘故,清理一下即可. 1.电脑开机并弹出出错提示 Autolt Error . 2.从这个截图可以知道,这是谷歌浏览器的升级程序在作怪,清理一下即可. 3.但问题是网友回复,并没有安装谷歌浏览器,怎么会有启动项?这要分为两种情况,一种是已经安装,自己并不知道,看路径已经存在.另一种是已经卸载,但是谷歌升级程序依然是随机而动,找不到北,才会出错. 4.当然,如果在运行中输入:msconfig 回车打开系统配置实用程序

四种常见的提示弹出框(success,warning,error,loading)原生JavaScript和jQuery分别实现

原文:四种常见的提示弹出框(success,warning,error,loading)原生JavaScript和jQuery分别实现  虽然说现在官方的自带插件已经有很多了,但是有时候往往不能满足我们的需求,下面我简单介绍一些 常见的四种提示弹出框(success,loading,error,warning),我分别用原生JavaScript和jQuery来介绍分享给各位博友! 一.首先介绍原生JavaScript来实现四种提示弹出框: 第一步:先看看html的建立 <!DOCTYPE htm