【发布时间】:2014-11-25 23:13:23
【问题描述】:
似乎重载运算符对我不起作用,我可能做错了什么。
我有这个结构
typedef void (*fptr)(void);
struct Mystruct
{
int id;
int priority;
double timeSaved;
double aktivationTime;
fptr eventPointer;
MystructnextPtr;
Mystruct(int id, int priority, double timeSaved, double aktivationTime, fptr eventPointer);
};
这个运算符:
bool operator <(const Mystruct& x, const Mystruct& y)
{
return std::tie(x.aktivationTime, x.priority, x.timeSaved) < std::tie(y.aktivationTime, y.priority, y.timeSaved);
}
我正在尝试执行这段代码:
Mystruct* struct1 = new Mystruct(5, 10, 0, 15.3, f1);
Mystruct* struct2 = new Mystruct(5, 10, 0, 14.3, fi);
if (struct1 < struct2)
{
cout << "struct1 is smaller!" << endl;
}
else
{
cout << "struct2 is smaller!" << endl;
}
它总是对我说 struct1 更小,无论这些结构中有什么。做错了什么?
【问题讨论】:
-
您在比较指针而不是结构。试试 if (*struct1
-
更好的是,这里不要使用指针。
-
那么我应该如何创建结构?
-
@TonyLee 它说,我没有创建后台操作员。
-
@Dracke:“那么我应该如何创建结构?”
Mystruct struct1(5, 10, 0, 15.3, f1);是常规方式。保存new,以备您真正需要时使用。