【发布时间】:2020-11-20 11:09:05
【问题描述】:
我一直都知道,要以一种快速的方式实现一个类的运算符
例如
struct TestInt
{
int a = 0;
int b = 0;
};
TestInt first;
TestInt second(first);
bool aLess = std::tie( first.a, first.b)
< std::tie(second.a, second.b);
bool bLess = std::tie( first.a, first.b)
> std::tie(second.a, second.b);
EXPECT_EQ(aLess, false);
EXPECT_EQ(bLess, false);
EXPECT_EQ(aLess, bLess);
如果您使用另一个包含字符数组的成员的结构,则相同的方法不起作用 喜欢:
struct TieTestChar
{
char a[10];
int b=0;
TieTestChar() {strcpy(a, "test");}
};
TieTestChar first;
TieTestChar second(first);
bool aLess = std::tie( first.a, first.b)
< std::tie(second.a, second.b);
bool bLess = std::tie( first.a, first.b)
> std::tie(second.a, second.b);
EXPECT_EQ(aLess, false);
EXPECT_EQ(bLess, false);
EXPECT_EQ(aLess, bLess);
我错过了什么?
[已编辑测试用例]
【问题讨论】:
-
我想那是因为你想比较
char[]的地址 -
有道理
-
使用
strncmp或strncasecmp比较char[] -
我正在寻找一种比较结构的通用方法。 std::tie 曾经用于我以前的测试,但在这种情况下不是
-
而不是
char[]使用std::string
标签: c++ c++11 comparison std