C++;对象声明需要另一个对象作为参数 面向对象的C++。

C++;对象声明需要另一个对象作为参数 面向对象的C++。,c++,oop,C++,Oop,我应该给一个微波物体编码,它“加热”一个冷冻的物体。 微波对象的一种方法,称为无效加热粉(冷冻粉),假设将冷冻粉对象的一个实例作为参数,并提高其温度 冷冻粉 #包括 类冻粉{ 公众: 冻结(std::string,int); 空隙设定温度(双); std::string getName()常量; int getVolume()常量; 双getCoeffizient()常量; 双getTemperature()常数; 私人: std::字符串名; 国际卷; 双温; 双系数; }; frozend

我应该给一个微波物体编码,它“加热”一个冷冻的物体。 微波对象的一种方法,称为无效加热粉(冷冻粉),假设将冷冻粉对象的一个实例作为参数,并提高其温度

冷冻粉

#包括
类冻粉{
公众:
冻结(std::string,int);
空隙设定温度(双);
std::string getName()常量;
int getVolume()常量;
双getCoeffizient()常量;
双getTemperature()常数;
私人:
std::字符串名;
国际卷;
双温;
双系数;
};
frozendemine.cpp

#包括
#包括“frozendemine.h”
使用名称空间std;
冻结:冻结(字符串名称,int mealVolu){
名称=名称;
体积=mealVolu;
温度=-18;
系数=0.24;
}
无效冻结::设置温度(双重测量){temperature=mealTemp;}
字符串冻结::getName()常量{return name;}
int frozendine::getVolume()常量{return volume;}
双重冻结::getCoeffizient()常量{return coeffizient;}
双重冻结::getTemperature()常量{返回温度;}
微波

#包括“frozendemine.h”
类微波炉{
公众:
微波();
无效的权力();
void lessPower();
无效设定期(双倍);
无效加热粉(冻结粉);/200)功率-=200;}
无效微波::设置周期(双会话周期){period=sessionPeri;}
真空微波炉:加热粉(冷冻粉){
设置温度(80);//示例
}
int微波::getPower()常量{return power;}
双微波::getPeriod()常量{返回周期;}
现在,我的问题是,我的编译器说文件frozendemine.h显然重新定义了frozendemine的对象类型,即使这应该是frozendemine.cpp文件的工作,但编译失败

我尝试将frozendine.h包含到Microwave.cpp中,但这导致了更多的编译器错误


我觉得我在这里犯了一个可怕的错误。

将include-guard添加到头文件中,使其内容不会被多次包含:

frozendemine.h

#ifndef FROZENMEAL_H_INCLUDED
#define FROZENMEAL_H_INCLUDED

// your code ...

#endif /* FROZENMEAL_H_INCLUDED */
#ifndef MICROWAVE_H_INCLUDED
#define MICROWAVE_H_INCLUDED

// your code ...

#endif /* MICROWAVE_H_INCLUDED */
微波.h

#ifndef FROZENMEAL_H_INCLUDED
#define FROZENMEAL_H_INCLUDED

// your code ...

#endif /* FROZENMEAL_H_INCLUDED */
#ifndef MICROWAVE_H_INCLUDED
#define MICROWAVE_H_INCLUDED

// your code ...

#endif /* MICROWAVE_H_INCLUDED */
此外,您从不初始化
int-Microwave::power
double-Microwave::period
,因此您将在
Microwave::morePower()
Microwave::lessPower()中读取和写入垃圾值

正如注释中所建议的,您希望通过引用获取
Microwave::heatmeine()
的参数,以便函数可以修改传递的对象:

void Microwave::heatMeal(FrozenMeal &mealInst)
//                                  ^

建议添加完整的错误消息文本。这听起来正是我需要做的事情。谢谢你的建议,我要试试!我在C++中是OOP新手,所以我需要看看如何实现这一点。@ SuaybYurdakul,我认为建议是把编译器错误的文本添加到你的问题中。在诊断问题时,错误信息的帮助远远超过错误信息的描述。@Caleb不幸的是,我的编译器用德文写出了错误信息。我不确定这些是否有用。但我以后一定会这么做的,谢谢你的提示!我删除了它,因为我不确定要做什么。但是,是的,需要将它作为一个引用来实际修改传入的对象。作为一个旁注-还有一个
#pragma once
-@AdamKotwasinski,我已经这样做了。具有讽刺意味的是,在我最初创建头文件时,VS包含了行#pragma,但我没有考虑太多,因为我对预处理器指令一无所知。
#ifndef MICROWAVE_H_INCLUDED
#define MICROWAVE_H_INCLUDED

// your code ...

#endif /* MICROWAVE_H_INCLUDED */
void Microwave::heatMeal(FrozenMeal &mealInst)
//                                  ^