我有一个基类,让我们称之为base_t
。 base_t
具有一个称为void render()
的功能。我希望所有从base_t
派生的类都可以访问该功能,但没有其他人可以使用。渲染功能将在base_t
中定义为virtual void render() = 0;
,使其成为纯虚拟的。
如何用C ++实现呢?通过朋友吗?还是有其他方法可以做到这一点?
为了更清楚一点,我希望类A
(派生自base_t
)能够访问类render()
中的函数B
(也源自base_t
)由A
和B
实现,但在base_t
中是纯虚拟定义的。
这里是一个例子:
class base_t
{
private:
virtual void render() = 0;
};
class A : public base_t
{
private:
virtual void render()
{
// Do Stuff
}
};
class B : public base_t
{
public:
void dostuff(A *classA)
{
// here I want to call render!
classA->render();
}
private:
virtual void render()
{
// Do Stuff
}
};
答案 0 :(得分:5)
那么简单呢?
class base_t
{
private:
virtual void render() = 0;
protected:
void renderOther(base_t& other){
other.render();
}
};
B可以通过接口方法呈现A并保持正确的封装。