注册 登录
编程论坛 C++教室

想弄个头文件,但老是出错。

moox 发布于 2018-01-05 12:55, 1310 次点击
头文件:
程序代码:
#include<vector>
class Stack{
    vector<int> s;
public:
    int StackEmpty(){
        return (s.empty()==1 ? 1 : 0);
    }
    void StackPush(int element){
    s.push_back(element);
    }
    int StackPop(){
        if(!s.empty()) { int x=s[s.size()-1];s.pop_back(); return x;}
        else cout<<"#the stack is empty#"<<endl;
    }
    int StackTop(){
        if(s.empty()) cout<<"the stack is empty"<<endl;
        else return s[s.size()-1];
    }
};

主函数:
程序代码:
#include"Stack.h"
#include<iostream>
using namespace std;
int main()
{
    Stack a;
    for(int x;cin>>x;)
    {
        a.StackPush(x);
        if(cin.get()=='\n') break;
    }
    cout<<a.StackEmpty();
    return 0;
}

错误:
e:\练习题\栈\stack.h(4) : error C2143: syntax error : missing ';' before '<'
e:\练习题\栈\stack.h(4) : error C2501: 'vector' : missing storage-class or type specifiers
e:\练习题\栈\stack.h(4) : error C2059: syntax error : '<'
e:\练习题\栈\stack.h(4) : error C2238: unexpected token(s) preceding ';'
执行 cl.exe 时出错.
vc6,看不懂这个错误错在哪了。。。。
6 回复
#2
rjsp2018-01-05 13:05
加 #include <iostream>
vector、cout、endl 前加 std::

说个最严重的,你的C++学歪了,赶紧换书吧
#3
moox2018-01-05 15:16
回复 2楼 rjsp
还是不行啊,,还有,真的那么糟糕吗。。。。
#4
rjsp2018-01-05 18:57
回复 3楼 moox
不行就贴 修改后的代码 和 编译器给出的错误提示
你不肯贴,难道让我去找算命先生猜?!
#5
moox2018-01-06 09:15
回复 4楼 rjsp
实在抱歉,光想着不行。。。
程序代码:
#include<iostream>
#include<vector>
class Stack{
    std::vector <int> s;
public:
    int StackEmpty(){
        return (s.empty()==1 ? 1 : 0);
    }
    void StackPush(const int &element){
        s.push_back(element);
    }
    int StackPop(){
        if(!s.empty()) { int x=s[s.size()-1];s.pop_back(); return x;}
        else return -1;
    }
    int StackTop(){
        if(s.empty()) return -1;
        else return s[s.size()-1];
    }
};

e:\练习题\栈\stack.h(13) : error C2679: binary '[' : no operator defined which takes a right-hand operand of type 'int *' (or there is no acceptable conversion)
执行 cl.exe 时出错.
#6
moox2018-01-06 14:01
程序代码:
#ifndef STACK_H
#define STACK_H

#include<vector>
class Stack{
    std::vector <int> s;
public:
    int StackEmpty(){
        return (s.empty()==1 ? 1 : 0);
    }
    void StackPush(const int &element){
        s.push_back(element);
    }
    int StackPop(){
        if(!s.empty()) { int x=s[s.size()-1]; s.pop_back(); return x;}
        else return -1;
    }
    int StackTop(){
        if(s.empty()) return -1;
        else return s[s.size()-1];
    }
};
#endif
#7
rjsp2018-01-06 21:18
回复 5楼 moox
你贴出来的代码没有任何语法错误,我这儿可以编译
1