C++将变量作为对象进行比较

C++ comparing variables as an object

本文关键字:比较 对象 变量 C++      更新时间:2023-10-16

我试图比较两个变量,这些变量的类型是"Time"。我好像不会用===/!=功能。

#include<iostream>
#include "Stock.h"
using namespace std;
void Stock::setShares(int d, int m, int y, int h, int mts, double p, int vol, double val)
{
   date.setDate(d, m, y);
   time.setTime(h, mts);
   price = p;
   value = val;
   volume = vol;
}
Date Stock::getDate() const
{
  return date;
}
Time Stock::getTime() const
{
   return time;
}

这是我的主程序:

Time t1, t2;
for (int i = 1; i < counter; ++i)
        {
            if (V1.at(i).getPrice() == highestPrice)
            {
                time2 = V1.at(i).getTime;
                if (time2 != time1)
                {
                    cout << time2;
                }
            }
        } 

如何比较时间1&时间2?我正在努力避免在程序中打印重复的时间值。V1是一个加载了Stock对象数据的向量。

首先检查类型Time==!=运算符是否重载。您必须为要在代码中用于用户定义类型的运算符提供自己的含义,否则会出现编译器错误。

像下面这样,

class Time
{
public:
      bool operator==(Time const & t1) const
      {
         return this.hour == t1.hour && this.min==t1.min;
      }
private:
     int min;
     int hour;
};

为了能够完整地回答您的问题,有必要了解"时间"类型的详细信息。既然您讨论了比较两个对象,那么让我们假设它是类。

如果是像这样的简单类:

class Time {
    public:
        int getValue();
        void setValue(int value);
    private:
        int value;
}

您需要使用getValue方法:

if( t1.getValue() == t2.getValue())

如果你想直接比较对象,你需要重载必要的运算符:

bool operator==(const Time& anotherTime) const {
    return (anotherTime.getValue()==this->getValue());
}