[英]Object resets when passed
我最近一直在练习 C++,并且遇到了这个练习,我在对象引用方面遇到了一些困难。
时钟UTC.h
#include "ClockUTC.h"
ClockUTC::ClockUTC()
{
hour = 0;
minute = 0;
}
ClockUTC::ClockUTC(int hour, int minute)
{
this-> hour = hour;
this-> minute = minute;
}
int ClockUTC::getHour()
{
return hour;
}
int ClockUTC::getMinute()
{
return minute;
}
void ClockUTC::setHour(int hour)
{
this->hour = hour;
}
void ClockUTC::setMinute(int minute)
{
this->minute = minute;
}
时钟UTC.cpp
#ifndef CLOCKUTC_H_INCLUDED
#define CLOCKUTC_H_INCLUDED
#include <iostream>
using namespace std;
class ClockUTC {
private:
int hour;
int minute;
public:
ClockUTC();
ClockUTC(int hour, int minute);
int getHour();
int getMinute();
void setHour(int hour);
void setMinute(int minute);
};
#endif // CLOCKUTC_H_INCLUDED
时钟TZ.h
#ifndef CLOCKTZ_H_INCLUDED
#define CLOCKTZ_H_INCLUDED
#include <iostream>
#include "ClockUTC.h"
using namespace std;
class ClockTZ : public ClockUTC{
private:
ClockUTC clockUTC;
int offset;
public:
ClockTZ(ClockUTC clockUTC, int offset);
ClockUTC getClockUTC();
int getOffset();
void setClockUTC(ClockUTC clockUTC);
void setOffset(int offset);
};
#endif // CLOCKTZ_H_INCLUDED
时钟UTC.cpp
#include "ClockTZ.h"
ClockTZ::ClockTZ(ClockUTC clockUTC, int offset)
{
this->clockUTC = clockUTC;
this->offset = offset;
clockUTC.setHour(clockUTC.getHour() + offset);
}
ClockUTC ClockTZ::getClockUTC()
{
return clockUTC;
}
int ClockTZ::getOffset()
{
return offset;
}
void ClockTZ::setClockUTC(ClockUTC clockUTC)
{
this->clockUTC = clockUTC;
}
void ClockTZ::setOffset(int offset)
{
this->offset = offset;
}
这里的主文件是:
/**
Unit tests for 2nd EOOP assignment.
ClockUTC - aggregate 2 integers (hour, minute)
ClockTZ - view for ClockUTC, store reference to clockUTZ and offset
Note that this is in a big part "code reading" exercise.
Based on this file you should implement two classes mentioned above,
with proper interface, and in right header file.
*/
#include "ClockTZ.h"
#include <iostream>
using namespace std;
int main() {
ClockUTC greenwich(9,17);
ClockTZ warsaw(greenwich, 2);
if (warsaw.getHour() != 12){
cout << "Error in getHour() 1" << endl;
}
return 0;
}
我已经对上述文件进行了编码,唯一的问题是在创建 ClockUTC 类并将其传递给 ClockTZ 之后,ClockUTC 重置并且它正在调用它的空构造函数并将小时设置为 0 而不是它的值 + 预期的偏移量。 我知道这是因为该对象没有任何引用,并且它在传递或某事后立即被销毁,但似乎无法修复它。
当前输出:0
预期输出:12
我尝试通过应用 & 参考来修复它,但似乎没有任何效果。 有人可以帮我正确应用它吗?
ClockTZ
有两个ClockUTC
对象:一个基类和一个名为clockUTC
的成员变量。 ClockTZ
构造函数将通过复制传入的值来初始化成员变量,并将默认初始化基类。 当您稍后调用getHour
,将调用基类,返回默认值0
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.