C++ 多类、多输出
我有一个约会的课程和一个时间点的课程。现在我想把它们结合起来。我的问题是,我无法让输出工作,它总是使用初始化日期。 这是我的密码: main.cppC++ 多类、多输出,c++,c++11,C++,C++11,我有一个约会的课程和一个时间点的课程。现在我想把它们结合起来。我的问题是,我无法让输出工作,它总是使用初始化日期。 这是我的密码: main.cpp #include <iostream> #include <iomanip> #include "date.hpp" #include "time.hpp" using namespace std; int main() { Datum d1; Datum d2(03, 12, 2015); cout <<
#include <iostream>
#include <iomanip>
#include "date.hpp"
#include "time.hpp"
using namespace std;
int main() {
Datum d1;
Datum d2(03, 12, 2015);
cout << "d1: " << d1 << endl;
cout << "d2: " << d2 << endl << endl;
zeit z1;
cout << "z1: " << z1 << endl;
zeit z2(d2, 23, 30);
cout << "z2: " << z2 << endl;
return 0;
}
#包括
#包括
#包括“date.hpp”
#包括“time.hpp”
使用名称空间std;
int main(){
基准d1;
数据d2(2015年3月12日);
cout您没有设置zeit
类的内部日期,因此当调用它时,它仍然使用默认日期初始化,您期望的输出是什么?另外,请创建一个zeit::zeit():zeit(Datum(),0,0){return;}
始终将数据初始化为默认值?@hlt我希望输出z2:3.12.2015,23:30@πάνταῥεῖ 他打算将第一个日期作为默认日期,这是给他带来问题的z2
。this.date
给了我编译器错误,所以这是我的快速修复方法;我现在正试图用VC++解决问题。这会解决我的问题,泰。但它不完全正确还是什么?不要使用this.date
(此
是指针,而不是对象本身)。只需使用this->date
@hlt啊,那是我的错误。即使日期不是静态的,但在初始化z2
后打印z1
之后,它似乎仍然可以工作。我想这只是一种不好的做法。相应地更新了答案。@vienya我修复了它,改为使用this->
,或者只是重命名它,这样就可以了不要模棱两可。尽管这两种方法都有效,但如果您使用zeit::
,这并不重要,尽管它可能会向其他程序员暗示date
是静态的。
#include "date.hpp"
#include <iostream>
Datum::Datum(unsigned int d, unsigned int m, unsigned int y)
{
day = d;
month = m;
year = y;
return;
}
Datum::Datum() : Datum(1, 1, 2000) { return; }
unsigned int Datum::getday() { return day; }
unsigned int Datum::getmonth() { return month; }
unsigned int Datum::getyear() { return year; }
std::ostream& operator<<(std::ostream& os, Datum& z)
{
os << z.getday() << ".";
os << z.getmonth() << ".";
os << z.getyear();
return os;
}
#ifndef DATUM_HPP_
#define DATUM_HPP_
#include <iostream>
class Datum {
private:
unsigned int day;
unsigned int month;
unsigned int year;
public:
Datum(unsigned int, unsigned int, unsigned int);
Datum();
unsigned int getday();
unsigned int getmonth();
unsigned int getyear();
friend std::ostream& operator<<(std::ostream&, Datum&);
};
#endif
#include "time.hpp"
#include <iostream>
zeit::zeit(Datum date, unsigned int h, unsigned int m)
{
std::cout << date.getday() << "." << date.getmonth() << "." << date.getyear() << std::endl;
min = m;
hour = h;
return;
}
zeit::zeit() : zeit(Datum(),0,0) { return; }
unsigned int zeit::getmin() { return min; }
unsigned int zeit::gethour() { return hour; }
std::ostream& operator<<(std::ostream& os, zeit& z)
{
os << z.date << ", ";
if (z.gethour() < 10)
os << "0" << z.gethour();
else
os << z.gethour();
os << ":";
if (z.getmin() < 10)
os << "0" << z.getmin();
else
os << z.getmin();
return os;
}
#ifndef ZEIT_HPP_
#define ZEIT_HPP_
#include "date.hpp"
class zeit {
private:
unsigned int min;
unsigned int hour;
Datum date;
public:
zeit(Datum, unsigned int, unsigned int);
zeit();
unsigned int getmin();
unsigned int gethour();
friend class Datum;
friend std::ostream& operator<<(std::ostream&, zeit&);
};
#endif
this->date = date;