C ++帮助(ISO C ++禁止指针和整数之间的比较。)

时间:2014-01-31 23:51:46

标签: c++

我正在尝试使用堆栈创建一个非常简单的程序,但是当我尝试运行它时,我似乎遇到了错误。错误说“ISO C ++禁止指针和整数之间的比较。”。非常感谢任何帮助。

我的代码:

#include <iostream>
#include <string>
using namespace std;

const int maxstack = 5;

struct stacktype{
    string name[maxstack];
    int top;
};

void createstack(stacktype &stack);
void destroystack(stacktype &stack);
bool fullstack(stacktype stack);
void push(stacktype &stack, string &newelement);
bool emptystack(stacktype stack);
void pop(stacktype &stack, string &poppedelement);

int main(){
    stacktype stack;
    string newelement, poppedelement;
    char quest;

    createstack(stack);
    cout<<"Do you want to enter data? (y/n)";
    cin>>quest;

    while((quest == "y" || quest == "Y") && !(fullstack(stack))){ //I get the error on this line
        cout<<"Please enter name";
        cin>>newelement;
        push(stack, newelement);
        cout<<"Do you want to enter data? (y/n)";
        cin>>quest;
    }

    cout<<endl<<endl;

    while(!emptystack(stack)){
        pop(stack, poppedelement);
        cout<<poppedelement<<endl;
    }

    destroystack(stack);
    system("PAUSE");
    return 0;
}

void createstack(stacktype &stack){
    stack.top = -1;
}
void destroystack(stacktype &stack){
    stack.top = -1;;
}
bool fullstack(stacktype stack){
    if(stack.top == maxstack - 1){
        return true;
    }else{
        return false;
    }
}
void push(stacktype &stack, string &newelement){
    stack.top++;
    stack.name[stack.top] = newelement;
}
bool emptystack(stacktype stack){
    if(stack.top == -1){    
        return true;
    }else{
        return false;
    }
}
void pop(stacktype &stack, string &poppedelement){
    poppedelement = stack.name[stack.top];
    stack.top--;
}

3 个答案:

答案 0 :(得分:3)

questchar,但"y"是字符串文字,类型为const char[2]。当您尝试将这些与quest == "y"进行比较时,字符串文字将转换为指向其第一个元素的指针,因此您尝试将char与指针进行比较。那是错误告诉你的。

您需要类似'y'的字符文字,而不是字符串文字,其类型为char

答案 1 :(得分:0)

quest属于char类型,因此它是单个字符,您尝试将其与字符串文字(如"y")进行比较。对char字面值使用单引号:'y'

答案 2 :(得分:-1)

由于您正在编写C ++代码,因此应使用string类而不是"y"