我有幾個成員的課。我迄今爲止在我的班級中沒有任何獲得者,因爲我不想讓人們暴露班級的具體情況。然後我必須比較這個類的兩個對象是否相等。我想不出創造幾個公共獲得者的方法。我真的不想這樣做,以保持封裝。有另一種方法嗎?比較兩個相同類型的對象是否相等,沒有公共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()?
}
那麼,'保護'確實適用於實例級別,不是嗎? – jrok
@jrok:這個類的一個'static'方法可以訪問所有類的'protected'和'private'數據,但我明白你的意思。 '保護'只是很奇怪。 –
@jrok:不確定你的意思。你仍然可以做'void foo(T&rhs){this-> x = rhs.x; }'即使'x'是'protected' ... –