在没有公共getter的情况下,比较两个相同类型的对象是否相等
Compare two objects of the same type for equality without public getters?
我有一个有几个成员的类。到目前为止,我的课堂上还没有成功的赢家,这是我喜欢的,因为我不希望人们暴露课堂的细节。然后,我必须比较这一类的两个对象以获得相等性。我想不出有什么办法可以创造出几个公众人物。我真的不想这样做来保持封装。还有别的办法吗?
class Foo
{
public:
bool Equals( const Foo &other ) const;
private:
bool x;
// lots of other members
};
bool Foo::Equals( const Foo &other ) const
{
// would I have to create and use public function other.GetX()?
}
您可以创建自己的公共平等成员运算符:
class Foo
{
public:
bool operator ==(Foo const& rhs) const
{
return x == rhs.x;
}
};
使用示例:
Foo a, b;
assert(a == b);
@0x499602D2已经给出了一个很好的答案,解释了如何做到这一点。
除此之外,我认为您还没有了解的关键点是访问说明符(protected
和private
)应用于类级别,而不是实例级。因此,一个类的一个实例可以访问另一个实例的私有成员。
相关文章:
- 可以将两个相同类型的连续数组视为一个数组吗?
- [[no_unique_address]] 和两个相同类型的成员值
- C++将两个不同类型的向量的属性连接到新的向量中
- 如何在 c++ 中将两个不同类型的变量分配给一个变量
- 为什么我不能在同一行中定义两个相同类型的类的成员指针
- 我想添加两个字符串类型的矩阵.用户将不会输入行数或列的数量.用户将仅输入数组
- 是否可以分配两个不同类型的结构
- C++ 重载运算符 - 减去两个相同类型的对象
- C++:从模板中构造具有两个相同类型名称的海峡
- 比较C 中的两个数据类型
- 在C++中,当两个向量类型不同时,如何将值存储到向量内部的向量中
- 在整数数据类型和连续两个字符类型之后.第 2 个字符的数据类型跳过..为什么
- 确定两个矢量类型或一个矢量类型与标量类型之间的二进制运算结果的正确大小类型
- 在没有公共getter的情况下,比较两个相同类型的对象是否相等
- 在c++中编写两个基本类型之间的重载比较(==)
- 如何在yacc联合中保存出现在同一规则下的两个相同类型的对象
- Bison:$$和$1指向相同的内存位置(两个指针类型的联合YYSTYPE)
- c++中两个float类型变量的精确比较
- 比较两个不同类型的值
- 不能从两个相同类型的源之一创建std::string