�Blade灬 2020-03-13 00:18 采纳率: 100%
浏览 257

求c++大神来看看我这个问题怎么解决(已解决)

我是c++初学者,现在想利用栈来实现判断输入字符串是否回文的小程序,利用的思路是先让字符串入一次栈再出栈实现字符串倒序,再与入栈前的字符串状态比较来得出是否是回文,由于我c++还不是很熟练,一直卡在这,求大神帮忙看看怎么解决:

#pragma once
#include <iostream>
#include <cstdio>
#ifndef _SEQSTACK_H_
using namespace std;

template <class T>
class seqStack
{
private:
    T *data;     //动态数组指针
    int top;             //顶元素         
    int maxSize; //栈大小
public:
    seqStack(int size);
    ~seqStack() { }
    void clear();
    int size();
    bool empty()const { return top == -1; }//判空
    bool full() {return top==maxSize-1}//判满
    void push(T const& value);
    T getTop()const;
    T pop(T value);

};
#endif 
//头文件

#include"seqStack.h"
using namespace std;


template<class T>
seqStack<T>::seqStack(int size) //构造函数
{
    maxSize = size;
    top = -1;
    data = new T[maxSize];
}

template <class T>
T seqStack<T>::getTop()const //获栈顶元素
{
    if (top=-1)
        throw "the Stack is empty";
    return data[top];
}
template <class T>
T seqStack<T>::pop(T value) //出栈
{
    if (top==-1)
      throw"the Stack is empty"
    return value=data[top--];
}

template <class T>
void seqStack<T>::push(T const& value) //进栈
{
    if (full())
       throw"the stack is full"
    else  data[++top] = value;
}

//这里是类模板的定义


#include <iostream>
#include"seqStack.h"
#include"seqStackTemplate.cpp"
#include<string>
using namespace std;
int main()
{
    seqStack<string> stack(500);
    cout<< "=========Palindrome Judge==========";
    cout << "Please enter several sets of string:";
    string s;
    string save;
    string save1;
    int z = 0;
    while (1)
    {
        if (s != "STOP")
        {
            cin >> s;
            save = s;
            for (int i = 0;i < s.length;i++)
            {
                stack.push(s[i]);  //这里报错了
            }
            for (int i = 0;i < s.length;i++)
            {
                stack.pop(s[i]);   //这里报错了
            }
            save1 = s;
            ++z;
            if (save1 == save)
                cout << "#" << z << "YES" << endl;
            else
                cout << "#" << z << "NO" << endl;

        }
    }




}
//主函数的实现部分

编译器一直显示
E0415 不存在从 "char" 转换到 "std::basic_string, std::allocator>" 的适当构造函数
main函数的30行和26行都报上面这个错误,求大佬QAQ

  • 写回答

2条回答 默认 最新

  • A_zjzj 2020-03-13 10:14
    关注

    我觉得可以把push和pop写在类里面不要在外面弄,写里面试试

    评论

报告相同问题?

悬赏问题

  • ¥15 使用C#,asp.net读取Excel文件并保存到Oracle数据库
  • ¥15 C# datagridview 单元格显示进度及值
  • ¥15 thinkphp6配合social login单点登录问题
  • ¥15 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 虚心请教几个问题,小生先有礼了
  • ¥30 截图中的mathematics程序转换成matlab