求助:C++在头文件中用枚举变量作为类中函数返回值一直有错??为什么??!

Cozeh Cozeh 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
数据结构与算法的作业,快把自己逼疯了,网上有效信息好少(或者是我自己不会筛选??)。
一直这样报我看不懂的错,叹息.....

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



感觉出问题的原因应该是:在头文件里定义了枚举变量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;

}


问题到底在哪里?
...全文

相关推荐

C++ .h和.cpp文件总结

"这篇文档是关于C++编程中头文件(.h)和源文件(.cpp)的使用总结,旨在帮助新手理解两者的区别和作用。文档提到了头文件通常用于声明类型、函数和宏常量,而源文件则用于实现函数和定义变量。作者探讨

奔跑的龟龟

C++ 类 函数 变量

在C++中, 用 “类” 来描述 “对象”, 所谓的"对象"是指现实世界中的一切事物。那么类就可以看做是对相似事物的抽象, 找到这些不同事物间的共同点, 如自行车和摩托车, 首先他们都属于"对象", 并且具有一定得相同点, 和一些不同点, 相同点如他们都有质量、都有两个轮子, 都是属于交通工具等。“都有质量”、"两个轮子"属于这个对象的属性, 而"都能够当做交通工具"属于该对象具有的行为, 也称方法。类是属于用户自定义的数据类型, 并且该类型的数据具有一定的行为能力, 也就是类中说描述的方法。

小秋slam实战

C++在函数中给类的指针变量赋值问题

### C++中函数内给类的指针变量赋值问题详解#### 一、问题背景与分析在C++编程中,指针的使用是非常常见的,尤其是在处理复杂数据结构或对象时。

GIS_Dolphin

C、C++常用头文件及函数汇总

### C/C++常用头文件及函数汇总在C/C++编程语言中,头文件是预定义的标准库,包含了实现各种功能所需的函数、变量和数据类型的声明。熟练掌握这些头文件及其内部函数对于提高编程效率至关重要。

FlyingBird_SXF

C++_关于声明,定义,类的定义,头文件作用

- **示例**: ```cpp int x = 3; // 变量定义 void print() { /* 函数体 */ } // 函数定义 ```### 类的定义类是C++中的一个重要概念,用于定义对象的行为和属性

scuberivo
评论 3
收藏 已收藏
分享
返回顶部
Cozeh
C++ 语言 65,214 成员 250,514 内容