混淆了运算符c ++

时间:2015-04-03 15:46:12

标签: c++ operator-overloading operators

这里是运算符函数(inSeconds的类型为int)

const Time Time::operator +( const Time& t) const {
    return Time(inSeconds_ + t.inSeconds_);
}

但我还需要使用此运算符来使用此代码。 (t1是时间的实例,12是整数),没有交换顺序中的值)

Time t(12 + t1);

请帮助我,对不起,如果这对新手来说毫无意义。

感谢

2 个答案:

答案 0 :(得分:1)

  1. 使函数成为全局函数,而不是成员函数。
  2. 将构造函数添加到Time,其中int(代表秒数)作为参数。
  3. 以下代码适用于我:

    struct Time
    {
       Time(int sec) : inSeconds_(sec) {}
       int inSeconds_;
    };
    
    Time operator+(Time const& lhs, Time const& rhs)
    {
       return Time(lhs.inSeconds_ + rhs.inSeconds_);
    }
    
    int main()
    {
       Time t1(10);
       Time t2(12 + t1);
    }
    

答案 1 :(得分:0)

您需要的是一个自由函数运算符。

struct Time {
  // ...
};

// note: outside the class

Time operator+(const Time& left, const int& right)
{
  return Time( /* whatever should go here */);
}

总是喜欢将二元运算符编写为自由函数,这些函数根据类中的实用方法开展工作 - 您的生活将更加轻松。