Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/141.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 多类、多输出_C++_C++11 - Fatal编程技术网

C++ 多类、多输出

C++ 多类、多输出,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 <<

我有一个约会的课程和一个时间点的课程。现在我想把它们结合起来。我的问题是,我无法让输出工作,它总是使用初始化日期。 这是我的密码:

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 << "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;