将一个类用作头文件中另一个类中的值类型
Using a class as a value type within another class in the header file
我在编写自助餐厅模拟项目时遇到了另一个问题。这个想法是我正在编写三个类(学生,小组和托盘)和一个主程序来模拟正在运行的自助餐厅。托盘包含某些信息,例如颜色和拿起它的学生的姓名,以及托盘上的食物加起来的总量。每个托盘与学生配对后,将其推到小组堆栈上。这就是问题出现的地方。尝试使用托盘参数定义组函数时,我遇到了各种错误。下面是两个类的代码以及一些错误,再次,我将不胜感激任何见解:
class group
{
public:
//CONSTRUCTOR
group(string color="nocolor"){group_color=color; group_total=0;}
//MEMBER FUNCTIONS for group class:
void set_color(string new_color){group_color=new_color;}
void add_member(simic_217A::tray new_member){assert(group_color==new_member.color());members.push(new_member);group_total+=new_member.price();}
//void add_it_up();
void remove_one() {members.pop();}
void empty_group(){assert(!members.empty()); while(!members.empty()){members.pop();}} // NEWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWw
//CONST MEMBER FUNCTIONS for group class:
string color() const {return group_color;}
double price_tot() const {assert(!members.empty()); return group_total;}
bool is_empty() const {return members.empty();}
simic_217A::tray top_item() const {return members.top();}
private:
double group_total;
string group_color;
stack<simic_217A::tray> members;
};
//NONMEMBER FUNCTION for group class:
std::ostream& operator <<(std::ostream& outs, const group& info);
class tray
{
public:
//CONSTRUCTOR
tray(string color="nocolor"){tray_color=color; tray_student_name="noname"; tray_price=0;}
//MEMBER FUNCTIONS for tray class:
void pick_up(student nextinline){tray_student_name= nextinline.get_name(); tray_price= nextinline.price(); nextinline.set_group(tray_color) ;}
string set_color(string color){tray_color=color;}
void drop_tray(){tray_student_name="noname"; tray_price=0;}
//CONST MEMBER FUNCTION for tray class:
string tray_name() const {return tray_student_name;}
double tray_price_func() const {return tray_price;}
string color () const {return tray_color;}
private:
string tray_color;
string tray_student_name;
double tray_price;
};
}
以下是我在尝试编译时遇到的几个错误:
error C2039: 'tray' : is not a member of 'simic_217A'
error C2061: syntax error : identifier 'tray'
error C2146: syntax error : missing ';' before identifier 'top_item'
托盘的定义需要出现在依赖于它的任何类之前,例如组。否则,编译器将不知道托盘是什么。
相关文章:
- C++-试图将函数指针推回到另一个CPP文件中的矢量时出错
- 输入到文件并输出到另一个文件,并将流文件传递给函数
- C++试图读取一个文件并输出到另一个文本文件
- 如何从另一个文件继承私有成员变量和公共函数
- 在 Windows 上,是否可以让 dll 在不使用 PATH 环境变量的情况下在另一个文件夹中查找依赖项?
- C++ 如何打开带有另一个目录的输入文件?
- 如何在 Gnuplot 中分别绘制 2 个文件数据?我有一个文件"sin.txt",另一个文件"cos.txt",我想将它们分别绘制在一个图表上
- 从另一个 cpp 文件更改结构内、映射键内的变量
- 程序在使用 system() 启动另一个可执行文件时停止
- 如何在安卓工作室中将c ++头文件从一个文件夹导入到另一个文件夹?
- 如何在另一个 CPP 文件中使用一个 cpp 文件中的函数?
- 使用 scope 运算符 (::) 引用另一个文件中的类
- JNI,使用两个 .so 文件时出错,其中一个文件需要另一个文件
- 如何将包含另一个对象向量的对象保存到文件中,并使用C++中的二进制文件从文件中读回?
- 两个线程一个使用流 Api,另一个线程创建文件失败并出现错误ERROR_SHARING_VIOLATION
- 为什么我不能从同一目录中的另一个文件中 #include 我的类?
- 使用命名空间在另一个".cpp"文件中定义
- 在 c++ 中打开文件、删除标点符号并追加到另一个文件中
- C++ 如何将两个 makefile 对象目标规则(位于另一个文件夹中)合并到一个目标/规则中?
- 是否可以将子进程的 stdout 重定向到父进程中的另一个文件?