Zzzheng2000 学生  2019年09月07日
求助:C++在头文件中用枚举变量作为类中函数返回值一直有错??为什么??!
数据结构与算法的作业,快把自己逼疯了,网上有效信息好少(或者是我自己不会筛选??)。
一直这样报我看不懂的错,叹息.....

第一次求助广大网友,求教



感觉出问题的原因应该是:在头文件里定义了枚举变量Error_code。
但我也试了在头文件里声明static,在.cpp文件里定义;试了在头文件里定义,在.cpp文件里用extern声明,都不行。
甚至我还试了将枚举变量移到了类的内部,都不行。
awsl,数据结构杀我

代码如下:

这个是关于栈的头文件:

// stack.h
// stack头文件

#ifndef stack_h
#define stack_h
#include<iostream>
using namespace std;

enum Error_code {underflow,success,overflow};

template <typename Stack_entry>
class Stack
{
public:
Stack(int len) : count(0), size(len), entry(new Stack_entry[size]) {}
~ Stack() { delete [] entry; }
bool empty() const;
Error_code pop();
Error_code top( Stack_entry &item ) const;
Error_code push(const Stack_entry &item);
private:
int count;
int size;
Stack_entry * entry;
};


#endif


这个是栈的,cpp文件:

// stack.cpp
// stack的具体实现文件

#include<iostream>
#include "stack.h"
using namespace std;

template <class Stack_entry>
bool Stack<Stack_entry> :: empty() const
/*Pre: None.
Post:If the stack is empty, true is returned. Otherwisw false is returned.*/
{
return count == 0 ? true : false;
}

template <class Stack_entry>
Error_code Stack<Stack_entry> :: pop()
/*Pre: None.
Post:If the stack is not empty, the top of the stack is removed.
If the stack is empty, an Error_code of underflow is returned.*/
{
Error_code outcome = success;
if (count == 0)
outcome = underflow;
else
cout << entry[count--];
return outcome;
}

template <class Stack_entry>
Error_code Stack<Stack_entry> :: push(const Stack_entry &item)
/*Pre: None.
Post:If the stack is not full, item is added to the top of the stack..
If the stack is full, an Error_code of overflow is returned.*/
{
Error_code outcome = success;
if (count > size)
outcome = overflow;
else
entry[count++] = item;
return outcome;
}

template <class Stack_entry>
Error_code Stack<Stack_entry> :: top(Stack_entry &item) const
/*Pre: None.
Post:If the stack is not empty, the top of the stack is returned in item.
If the stack is empty, an Error_code of underflow is returned.*/
{

Error_code outcome = success;
if(count == 0)
outcome = underflow;
else
item = empty[count-1];
return outcome;
}


然后捏,这个是主程序:

/* 程序目的:
用模板形式将动态数组存储的栈实现
在主函数中将栈实例化
完成指定输入输出测试程序
*/

#include<iostream>
#include"stack.h"
using namespace std;

int main()
{
Stack<char> data(3);
data.push('a');
data.push('b');
data.push('c');
data.pop();
data.pop();
data.pop();

return 0;

}


问题到底在哪里?
...全文
85 1 收藏 3
写回复
3 条回复

还没有回复,快来抢沙发~

发动态
发帖子
C++ 语言
创建于2007-09-28

3.1w+

社区成员

24.8w+

社区内容

C++ 语言相关问题讨论,技术干货分享
社区公告
暂无公告