Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/156.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++_Overloading_Operator Keyword - Fatal编程技术网

C++ 操作员<&书信电报;及>&燃气轮机;超载

C++ 操作员<&书信电报;及>&燃气轮机;超载,c++,overloading,operator-keyword,C++,Overloading,Operator Keyword,可能重复: “您需要实现一个名为Duration的类,该类表示的长度为 时间,以小时、分钟和秒表示,例如,轨道上轨道的长度 CD或跑马拉松所需的时间。全班应有一套适当的 构造函数(包括错误检查)和访问器方法。构造函数之一 应允许使用单个整数初始化Duration对象,表示 以秒为单位的持续时间。应重载>运算符以允许 通过流输入和输出持续时间对象。应输出持续时间对象 格式为\h:mm:ss“,例如\1:39:33“,\0:09:07”和\1:00:08”。此外 应重载加法运算符+,以便可以添加两

可能重复:

“您需要实现一个名为Duration的类,该类表示的长度为 时间,以小时、分钟和秒表示,例如,轨道上轨道的长度 CD或跑马拉松所需的时间。全班应有一套适当的 构造函数(包括错误检查)和访问器方法。构造函数之一 应允许使用单个整数初始化Duration对象,表示 以秒为单位的持续时间。应重载>运算符以允许 通过流输入和输出持续时间对象。应输出持续时间对象 格式为\h:mm:ss“,例如\1:39:33“,\0:09:07”和\1:00:08”。此外 应重载加法运算符+,以便可以添加两个Duration对象 一起生成一个新的Duration对象,并使其具有整数秒数 可以添加到Duration对象。最后,该类应该进行类型转换 从Duration对象到表示持续时间(秒)的整数。“

#包括
#包括
使用名称空间std;
使用std::cout;
使用std::cin;
使用std::ostream;
使用std::istream;
上课时间
{
私人:
整小时,分,秒;
int秒;
公众:
Duration()//默认构造函数。
{}
持续时间(整数小时、整数分钟、整数秒)//普通构造函数。
{
小时=小时;
分钟=分钟;
秒=秒;
}
内联int getHours()
{
返程时间;
}
内联int getMinutes()
{
返回分钟数;
}
内联int getSeconds()
{
返回秒数;
}
};
希望到目前为止,我在这个任务上走的方向是正确的(本周对c++来说是新的)。然而,我正在为如何实现我用粗体突出显示的部分和之后的一切而挣扎

请建议和帮助我。
另外,请注意,这不是课程等。我只是在准备明年的C++。谢谢。

您应该有一个
std::ostream&
-返回函数,实现方式如下:

class Duration {

    int hours, minutes, seconds;
    int theSeconds;

    public:

        friend std::ostream & operator << (std::ostream & os, const Duration & dObj) {

            os << "The hours are " << dObj.hours << '\n';
            os << "The minutes are " << dObj.minutes << '\n';

            // ... and so on

        }

        Duration() {}
        Duration(int hr, int min, int sec) {
            hours = hr;
            minutes = min;
            seconds = sec;
    }

};
所以你可以这样使用它:

Duration d;

std::cin >> d;

std::cout << d;
d;
标准:cin>>d;

std::cout您应该有一个
std::ostream&
-返回函数,实现方式如下:

class Duration {

    int hours, minutes, seconds;
    int theSeconds;

    public:

        friend std::ostream & operator << (std::ostream & os, const Duration & dObj) {

            os << "The hours are " << dObj.hours << '\n';
            os << "The minutes are " << dObj.minutes << '\n';

            // ... and so on

        }

        Duration() {}
        Duration(int hr, int min, int sec) {
            hours = hr;
            minutes = min;
            seconds = sec;
    }

};
所以你可以这样使用它:

Duration d;

std::cin >> d;

std::cout << d;
d;
标准:cin>>d;

std::cout运算符在第1周过载?!不管怎样,到目前为止看起来不错,但你的问题是什么?你试过什么?嗨。是的,哈哈。我正在尝试重载>>而您的代码不完整。。。显示运算符方法的重载!显示代码,不是摘要,也不是零碎的。但是作为猜测,代码可能会声明
操作符
为成员。这意味着它们有三个参数:调用它们的对象(类型为
Duration
),以及两个命名参数。请注意,
操作符()
可能不应该是类的成员函数。。。这可能就是第三个参数的来源…第1周运算符重载?!不管怎样,到目前为止看起来不错,但你的问题是什么?你试过什么?嗨。是的,哈哈。我正在尝试重载>>而您的代码不完整。。。显示运算符方法的重载!显示代码,不是摘要,也不是零碎的。但是作为猜测,代码可能会声明
操作符
为成员。这意味着它们有三个参数:调用它们的对象(类型为
Duration
),以及两个命名参数。请注意,
操作符()
可能不应该是类的成员函数。。。这可能就是第三个参数的来源……非常感谢您的帮助。这就是我想要去的方向。这个实现非常出色。大家都知道,我认为我遇到的另一个参数问题是因为我试图在课堂上让他们超负荷工作。非常感谢你们的帮助。这就是我想要去的方向。这个实现非常出色。大家都知道,我认为我遇到的额外参数问题是因为我试图在类中重载它们。