这似乎是微不足道的,但无休止的搜索并没有产生答案。
我需要比较和分配。
如果我无法添加成员函数或朋友函数,我如何重载COORD?
使用这种基于Windows的结构是不好的风格?
另外,我知道我可以编写自己的类(或者只为每个成员执行一次操作),但这个问题确实让我感到疑惑。
答案 0 :(得分:3)
COORD
只有公共成员,因此不需要朋友功能 - 免费运营商就足够了:
bool operator <(COORD const& lhs, COORD const& rhs)
{
return lhs.Y < rhs.Y || lhs.Y == rhs.Y && lhs.X < rhs.X;
}
bool operator ==(COORD const& lhs, COORD const& rhs)
{
return lhs.X == rhs.X && lhs.Y == rhs.Y;
}
COORD
已经隐含了副本c'tor和operator=
,无需定义那些。
答案 1 :(得分:1)
为什么不从public COORD
派生您的课程并添加所需的语句? C ++中的struct
与class
相同,但默认情况下所有成员都是public
。
struct MyCoord : public COORD
{
// I like to have a typedef at the beginning like this
typedef COORD Inherited;
// add ctor, if you like ...
MyCoord(SHORT x, SHORT y)
: Inherited::X(x)
, Inherited::Y(y)
{ }
// no need for copy ctor because it's actually POD (plain old data)
// Compatibility ... ;)
operator COORD&()
{
return *this; // may need cast
}
COORD* operator&()
{
return this; // may need cast
}
// declare friends ...
}