标题:想弄个头文件,但老是出错。
只看楼主
moox
Rank: 2
来 自:福建
等 级:论坛游民
帖 子:92
专家分:93
注 册:2017-1-21
结帖率:82.35%
已结贴  问题点数:20 回复次数:6 
想弄个头文件,但老是出错。
头文件:
程序代码:
#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,看不懂这个错误错在哪了。。。。
搜索更多相关主题的帖子: 头文件 stack int return 练习题 
2018-01-05 12:55
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:14 
加 #include <iostream>
vector、cout、endl 前加 std::

说个最严重的,你的C++学歪了,赶紧换书吧
2018-01-05 13:05
moox
Rank: 2
来 自:福建
等 级:论坛游民
帖 子:92
专家分:93
注 册:2017-1-21
得分:0 
回复 2楼 rjsp
还是不行啊,,还有,真的那么糟糕吗。。。。
2018-01-05 15:16
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:0 
回复 3楼 moox
不行就贴 修改后的代码 和 编译器给出的错误提示
你不肯贴,难道让我去找算命先生猜?!
2018-01-05 18:57
moox
Rank: 2
来 自:福建
等 级:论坛游民
帖 子:92
专家分:93
注 册:2017-1-21
得分:0 
回复 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 时出错.
2018-01-06 09:15
moox
Rank: 2
来 自:福建
等 级:论坛游民
帖 子:92
专家分:93
注 册:2017-1-21
得分:0 
程序代码:
#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
2018-01-06 14:01
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:0 
回复 5楼 moox
你贴出来的代码没有任何语法错误,我这儿可以编译
2018-01-06 21:18



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-483990-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019491 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved