C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了C运算符问题大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我不知道这个问题是否已经在stackoverflow上回答了.但是我根本无法找到正确的关键字进行搜索.

我在下面插入了一些我的代码的下载版本.

所以基本上我在main()中要做的是从t2中减去122.我想我的编译器会自动将整数转换成一个timestamp对象,然后按照’timestamp.cpp’所示的方式减去它.

但是当它到达t4它不会转换它,给我以错误

我100%肯定这是可能的.但是怎么样

也许我完全错了转换…所以请尽快纠正我,我正在尝试学习一些东西.

剥离代码

@H_752_2@main.cpp中:

#include <iostream>
#include <iomanip>

#include "timestamp.h"

using namespace std;

int main() {
    timestamp t3(t2 - 122);
    cout << "T3 = " << t3 << endl;
    timestamp t4(722 - t1);
    cout << "T4 = " << t4 << endl;

    return 0;
}

timestamp.h

#ifndef TIJDSDUUR_H
#define TIJDSDUUR_H

using namespace std;

class timestamp {
    public:
        timestamp(int);
        timestamp operator- (const timestamp &t);
    private:
        int hour;
        int min;
};

timestamp.cpp

timestamp::timestamp(int m) : hour(0),min(m) {

}

timestamp timestamp::operator- (const timestamp &t) {
    timestamp temp;

    temp.hour = hour;
    temp.min = min;

    temp.hour -= t.hour;
    temp.min -= t.min;

    while(temp.min < 0.00) {
        temp.hour--;
        temp.min += 60;
    }

    return temp;
}

解决方法

与其他答案提出的相反,您不需要提供一个专门的运算符 – 它采用int和timestamp,而是可以(也可能应该)使operator成为一个非成员函数
timestamp operator-( timestamp lhs,timestamp const & rhs ); // Returns a timestamp?? really??

这样编译器可以自由地将转换应用于左侧和右侧的操作数,并使用从int到timestamp的隐式转换.

您可以阅读关于运算符重载here的设计和实现的简短说明,也可以在SO中的[C-faq]标签搜索“运算符超载”.

大佬总结

以上是大佬教程为你收集整理的C运算符问题全部内容,希望文章能够帮你解决C运算符问题所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。