我有一个Widget
类和一个派生自它的CompositeWidget
。 CompositeWidget
添加子级管理行为。 Widget
构造函数采用CompositeWidget*
参数作为小部件父级。我需要使用此父指针来访问CompositeWidget
中的某些功能。例如:
Widget::Widget(CompositeWidget* parent)
{
parent_->AddChild(*this);
}
这迫使我创建一个公共(public)方法
CompositeWidget::AddChild
。是否可以将这个接口(interface)保留给类层次结构专用(有点像对protected
的反向访问-限于基类)?我是否正在考虑这样的问题?编辑:我正在尝试避免友谊(如果在这种情况下可能的话)。
最佳答案
使用friend
关键字。
class Widget { ... };
class CompositeWidget {
friend class Widget;
};
但是,您也可以在
virtual
类上插入AddChild
方法Widget
。