仅对具有相同基类的类授予对函数的访问权限

时间:2019-04-08 11:15:12

标签: c++

我有一个基类,让我们称之为base_tbase_t具有一个称为void render()的功能。我希望所有从base_t派生的类都可以访问该功能,但没有其他人可以使用。渲染功能将在base_t中定义为virtual void render() = 0;,使其成为纯虚拟的。

如何用C ++实现呢?通过朋友吗?还是有其他方法可以做到这一点?

为了更清楚一点,我希望类A(派生自base_t)能够访问类render()中的函数B(也源自base_t)由AB实现,但在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
    }
};

1 个答案:

答案 0 :(得分:5)

那么简单呢?

class base_t
{
private:
    virtual void render() = 0;

protected:
   void renderOther(base_t& other){
      other.render();
   }
};

B可以通过接口方法呈现A并保持正确的封装。