我在 C++ 中有一个嵌套类,它必须是公共(public)的。但是我需要它的一些方法对外部世界可见,其余的只对嵌套类可见。那是:
class set {
public:
class iterator {
innerMethod();
public:
outerMethod();
}
}
我希望能够编写一个使用innerMethod() 的set 方法。如果我公开它,我也可以从外部访问它,这是我绝对不想要的。有没有办法在不做“ friend 类设置”的情况下做到这一点?
提前致谢!
最佳答案
如果不使用 friend
关键字,没有好的方法可以做到这一点。
在评论中你说:
friend
破坏了封装,也许这就是你的类主任说它是糟糕的编程的原因。 但是成员函数也破坏了封装, 那你为什么要使用它们呢?为什么不也避免它们呢? friend
以与成员函数相同的方式破坏封装; 因此,如果您愿意在需要 时使用成员函数 ,那么在需要时您应该也使用 friend
和 。 两者都存在于 C++ 中是有原因的!class set {
public:
class iterator
{
friend class set; //<---- this gives your class set to access to inner methods!
void innerMethod(){}
public:
void outerMethod(){}
};
iterator it;
void fun()
{
it.innerMethod();
it.outerMethod();
}
};
看到这个:How Non-Member Functions Improve Encapsulation
关于c++ - 保持公共(public)嵌套类的一部分仅对嵌套类可见,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4679983/