C++将变量作为对象进行比较
C++ comparing variables as an object
我试图比较两个变量,这些变量的类型是"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());
}
相关文章:
- 对于BTreeMap和其他依赖于Ord的东西,是否有等效于C++比较器对象?
- C++ <algorithm> 使用对象作为比较定义的 sort()
- C++,如何使用常量对象和非常量对象进行比较?
- 绘制一个对象,比较模具缓冲区的两个不同值
- 隐式转换为比较函数对象(函子)用于 std::sort 而不是 std::map?
- 为什么地图需要实现'operator<'以及如何比较对象?
- 如何使用std::lower_bound比较对象变量,而不使用第二个对象进行比较
- 可作为常量调用的比较对象
- 如何为C++映射创建自己的字符串比较对象
- 如何用类别的consumetrized构造函数声明使用类的比较对象设置的STL设置
- 我可以防止 std::sort 复制传递的比较对象吗?
- 是否可以创建一个函数来比较对象向量中动态选择的变量
- 比较对象的3个数字属性
- 如何将比较对象或函数传递给类函数
- C++STL priority_queue,比较对象的方法
- 比较对象标识符与字符串
- c++ STL集合:比较对象与外部状态
- 比较对象和指针
- 比较对象的两个向量的元素
- c++比较对象